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