QThread |
Здравствуйте, гость ( Вход | Регистрация )
QThread |
gpepsi |
4.10.2011, 20:37
Сообщение
#1
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
как из потоковой функции можно понять, что ожидается завершение потока ?
|
|
|
ViGOur |
5.10.2011, 10:00
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Послать ей сигнал.
Или ввести какую-нибудь переменную, например bool m_bThreadStop = false;, которую периодически проверять. |
|
|
gpepsi |
5.10.2011, 12:34
Сообщение
#3
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
Или ввести какую-нибудь переменную, например bool m_bThreadStop = false;, которую периодически проверять. у меня куча потоков. для каждой заводить переменную ? Послать ей сигнал. а как внутри определить ? ну если внутри while(true) { } никак не завершиться. нужно ожидать на чем-то. Странно что этого не предусмотрели... Сообщение отредактировал gpepsi - 5.10.2011, 12:35 |
|
|
silver47 |
5.10.2011, 13:53
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
|
|
|
gpepsi |
5.10.2011, 15:09
Сообщение
#5
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
gpepsi |
5.10.2011, 18:03
Сообщение
#6
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
Чем не подходит QThread::quit() ? а - понял, что имеется ввиду
в главном потоке
1. Это если все на сигналах построено, а если мне нужно крутить цикл, например, для чтения
2. Что если слоты подключаются в главном потоке, а сигналы вызываются в дочернем ? |
|
|
silver47 |
6.10.2011, 5:17
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Имеется ввиду, что если у вас есть указатели на потоки, то можно вызвать метод QThread::quit(). А проверить есть ли запущенные потоки, кроме основного и подождать их завершения можно так:
Крутить цикл для чтения из чего? Из файла или Вы серверную\клиентскую сторону сетевого приложения пишете? Во втором случае, удобнее, как мне кажется, использовать сигнал readyRead(). |
|
|
ViGOur |
6.10.2011, 9:01
Сообщение
#8
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
у меня куча потоков. для каждой заводить переменную ? Зачем для каждого? Достаточно разок завести для базового, что-то вроде этого:
|
|
|
gpepsi |
6.10.2011, 13:35
Сообщение
#9
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
ViGOur |
6.10.2011, 14:42
Сообщение
#10
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Или выносить в другой поток или не использовать цикл, а пользоваться только сигналами...
|
|
|
Текстовая версия | Сейчас: 29.3.2024, 17:32 |