Russian Qt Forum
Ноябрь 27, 2024, 02:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QThread, ожидание в потоке  (Прочитано 10442 раз)
alexman
Гость
« Ответ #15 : Март 25, 2010, 19:28 »

Код
C++ (Qt)
bool sStopped()
{
stoppedMutex.lock();
return stopped;
stoppedMutex.unLock();
 
}

unLock после return это сильно.
Код
C++ (Qt)
bool sStopped()
{
       QMutexLocker lock( &stoppedMutex );
return stopped;
}
Записан
SASA
Гость
« Ответ #16 : Март 26, 2010, 00:14 »

unLock после return это сильно.
Код
C++ (Qt)
bool isStopped()
{
       QMutexLocker lock( &stoppedMutex );
return stopped;
}
[/quote]
Спасибо за замечание. Я сам пользуюсь QMutexLocker, поэтому на ретуны внимания не обращаю.
Цитировать
Под виндой не скомпилится!
Почему?

Записан
alexman
Гость
« Ответ #17 : Март 26, 2010, 13:44 »

unLock после return это сильно.
Код
C++ (Qt)
bool isStopped()
{
       QMutexLocker lock( &stoppedMutex );
return stopped;
}
Спасибо за замечание. Я сам пользуюсь QMutexLocker, поэтому на ретуны внимания не обращаю.
Цитировать
Под виндой не скомпилится!
Почему?
[/quote]
sleep
Записан
Akaiten
Гость
« Ответ #18 : Март 26, 2010, 17:26 »

sleep
Странно, есть же QThread::sleep() или что тоже самое под виндой - WinAPI функция Sleep().
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Март 27, 2010, 12:45 »

Предлагаю так через wakeOne
Код
C++ (Qt)
void myThread::run() {
QMutex m;
m.lock();
for(int i = 0; i <= dataSize; ++i) {
 if (i) waitCondition.wait(&m);
 if (i < dataSize) obj->func(i);
}
m.unlock();
}
 
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.546 секунд. Запросов: 22.