Закрытие потока, как правильно это сделать? |
Здравствуйте, гость ( Вход | Регистрация )
Закрытие потока, как правильно это сделать? |
AD |
23.6.2009, 13:57
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Что-то не удается закрыть поток:
а в главном окне программы есть следующий сигнал:
В основной программе в слоте переключения вкладок я имитирую этот сигнал. В чем ошибка, из потока все-равно не выходит. В этот бесконечный цикл все-равно попадает. |
|
|
igor_bogomolov |
23.6.2009, 17:32
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
connect(imitTsl, SIGNAL(thread_stop()), SLOT(quit())); Цитата void QThread::quit () [slot] Tells the thread's event loop to exit with return code 0 (success). Equivalent to calling QThread::exit(0). This function does nothing if the thread does not have an event loop. See also exit() and QEventLoop. Смотри Цитата void QThread::terminate () [slot] Сам я никогда этой функцией не пользовался, но вроде, то что надоP.S. ИМХО. Мне не очень нравится когда коннекты раскидывают по всей программе. Программы становится труднее читать. Зачем он вынесен в run? На мой взгляд, конекты лучше делать там, где создается экземпляр класса. Сообщение отредактировал igor_bogomolov - 23.6.2009, 17:36 |
|
|
AD |
23.6.2009, 18:15
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Смотри Цитата void QThread::terminate () [slot] Не самая хорошая функция - аварийное завершение потока, а то и программы! Цитата void QThread::terminate () [slot]
Terminates the execution of the thread. The thread may or may not be terminated immediately, depending on the operating systems scheduling policies. Use QThread::wait() after terminate() for synchronous termination. When the thread is terminated, all threads waiting for the thread to finish will be woken up. Warning: This function is dangerous and its use is discouraged. The thread can be terminate at any point in its code path. Threads can be terminated while modifying data. There is no chance for the thread to cleanup after itself, unlock any held mutexes, etc. In short, use this function only if absolutely necessary. Termination can be explicitly enabled or disabled by calling QThread::setTerminationEnabled(). Calling this function while termination is disabled results in the termination being deferred, until termination is re-enabled. See the documentation of QThread::setTerminationEnabled() for more information. |
|
|
Текстовая версия | Сейчас: 15.1.2025, 10:48 |