QThread |
Здравствуйте, гость ( Вход | Регистрация )
QThread |
gpepsi |
5.8.2011, 13:00
Сообщение
#1
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
потоковая функция крутит постоянный цикл опрашивая флаг завершения.
функция ожидания потока (wait) может ждать его бесконечно. сбросить флаг перед ожидание потока нет возможности, т.к. я не нашел ни одну виртуальную функцию, которая бы вызывалась пепосредственно перед wait. как это можно реализовать ? или нужно писать обертку ? |
|
|
PAFOS |
5.8.2011, 13:32
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Если я правильно понял, то можно сделать так:
while( !thread->wait(100) ){ тут можно сбрасывать флаг, когда нужно } Сообщение отредактировал PAFOS - 5.8.2011, 13:33 |
|
|
gpepsi |
5.8.2011, 19:58
Сообщение
#3
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
PAFOS |
7.8.2011, 19:05
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
там же у функции bool QThread::wait( int usec ) можно явно задать кол-во миллисекунд ожидания. Если по истечении времени поток завершился, то bool QThread::wait( int usec ) вернет true, иначе false.
|
|
|
gpepsi |
9.8.2011, 19:59
Сообщение
#5
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
там же у функции bool QThread::wait( int usec ) можно явно задать кол-во миллисекунд ожидания. Если по истечении времени поток завершился, то bool QThread::wait( int usec ) вернет true, иначе false. это понятно - но в моем случае wait никогда не завершится с true. Это значит, что поток нужно terminate, что не есть хорошо |
|
|
wiz29 |
10.8.2011, 8:20
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
там же у функции bool QThread::wait( int usec ) можно явно задать кол-во миллисекунд ожидания. Если по истечении времени поток завершился, то bool QThread::wait( int usec ) вернет true, иначе false. это понятно - но в моем случае wait никогда не завершится с true. Это значит, что поток нужно terminate, что не есть хорошо Используй петлю обработки сообщений в рамках потока и QEvent смотреть тут как это работает |
|
|
PAFOS |
10.8.2011, 8:27
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Походу чет мы недопонимаем.
Может быть по коду будет понятнее моя мысль:
Не покатит?) И кстати, тему бы переместить не помешало бы) |
|
|
Текстовая версия | Сейчас: 14.1.2025, 19:01 |