Передача сигналов между потоками |
Здравствуйте, гость ( Вход | Регистрация )
Передача сигналов между потоками |
quarz |
13.4.2011, 14:31
Сообщение
#1
|
Студент Группа: Участник Сообщений: 49 Регистрация: 3.11.2009 Пользователь №: 1202 Спасибо сказали: 5 раз(а) Репутация: 0 |
Столкнулся с проблемой при организации передачи сигналов между потоками:
Есть главный гуишный поток A. Он создает 2 рабочих потока B и C. Мне нужно нужно сделать так: B-->C. Причем эти потоки друг о друге не знают, всех видит только главный поток. Минимальный код:
При этом я ожидаю, что slotC будет выполнятся в потоке C, а он выполняется в главном потоке А. Почему? Документация по QObject::connect и Qt::ConnectionType говорит, что если сигналы и слоты находятся в разных потоках, по умолчанию сигнал добавляется в очередь сообщений того потока, которому он адресован. |
|
|
wiz29 |
13.4.2011, 14:43
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
потому что сам объект потока C_ptr создан в контексте потока А, так же как и B_ptr.
те объекты которые будут созданы в контекстах потоков B_ptr и С_ptr, будут отрабатывать свои слоты соответственно в рамках времени выделенного потокам B_ptr и С_ptr соответственно. например (псевдокод)
Сообщение отредактировал wiz29 - 13.4.2011, 14:41 |
|
|
quarz |
13.4.2011, 14:58
Сообщение
#3
|
Студент Группа: Участник Сообщений: 49 Регистрация: 3.11.2009 Пользователь №: 1202 Спасибо сказали: 5 раз(а) Репутация: 0 |
Спасибо, я не знал про контексты потоков!
потому что сам объект потока C_ptr создан в контексте потока А, так же как и B_ptr. те объекты которые будут созданы в контекстах потоков B_ptr и С_ptr, будут отрабатывать свои слоты соответственно в рамках времени выделенного потокам B_ptr и С_ptr соответственно. например (псевдокод)
|
|
|
wiz29 |
13.4.2011, 15:06
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
http://developer.qt.nokia.com/wiki/Threads...Objects_Russian возможно поможет разобраться более детально.
|
|
|
Текстовая версия | Сейчас: 22.12.2024, 23:24 |