![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
gpepsi |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Использовал сигнал из потока. Обработчик слота находился в другом потоке.
Заметил, что сигнал не доходит. Поставил Qt::DirectConnection. Сигнал стал приходить. Но читая про него обнаружил еще и Qt::BlockingQueuedConnection, про который было написано, что он предназначен для работы из различных потоков и так же блокирует очередь. Но есть коментарий, что этот сигнал может привести к deadlock-у. В чем тогда различае между ними, если оба блокируют, но только второй может зависнуть. |
|
|
![]() |
Гость_lanz_* |
![]()
Сообщение
#2
|
Гости ![]() |
Прошу прощения, криво отправилось.
MoPDoBoPoT все правильно говорит. Правильный код:
run работает в другом потоке, но объект источник сигнала создан в том же, поэтому DirectConnect работает. Принадлежность к треду свойство объекта, а не фрагмента кода. Не уверен что такое использование правильное, я бы делал:
Правильно запускать в методе run цикл обработки событий. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 23.5.2025, 13:36 |