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