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