![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
gpepsi |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Использовал сигнал из потока. Обработчик слота находился в другом потоке.
Заметил, что сигнал не доходит. Поставил Qt::DirectConnection. Сигнал стал приходить. Но читая про него обнаружил еще и Qt::BlockingQueuedConnection, про который было написано, что он предназначен для работы из различных потоков и так же блокирует очередь. Но есть коментарий, что этот сигнал может привести к deadlock-у. В чем тогда различае между ними, если оба блокируют, но только второй может зависнуть. |
|
|
![]() |
MoPDoBoPoT |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Хм, как интересно)
Наверное, дело в том, что для обработки сигналов испускаемых из другого потока (из метода run()) необходим цикл обработки событий (QThread::exec ()). А с соединением Qt::DirectConnection работает, потому что сигнал испускается самим потоком, а он создан в контексте главного потока. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 31.5.2025, 5:06 |