Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Межпоточное взаимодействие (Qt 4.3.3)

Автор: flankerr 24.3.2009, 17:04

Qt 4.3.3
Есть класс А объект которого создан в главном потоке. Есть класс Б объект которого работает в контексте другого потока. Сигнал класса Б связан со слотом класса А.
Объект класса Б генерит сигнал, в ответ на это запускается слот объекта А
Теперь внимание вопрос.

В контексте какого потока будет вызван слот объекта класса А ???

Автор: BRE 24.3.2009, 17:14

Цитата(flankerr @ 24.3.2009, 17:04) *
В контексте какого потока будет вызван слот объекта класса А ???

В контексте той нити, где он создан.

Автор: flankerr 24.3.2009, 17:22

кто создан? слот?
Т.е. если объект класса со слотом в первом потоке, а объект класса вызвавший сигнал во втором потоке, то слот вызовёться в контексте первого потока (где создан объект класса обладающего слотом) - правельно понимаю ?

Автор: BRE 24.3.2009, 17:23

Цитата(flankerr @ 24.3.2009, 17:22) *
кто создан?

Объект, слот которого будет выполняться.

Автор: flankerr 24.3.2009, 17:32

ну т.е. моё предыдущие утверждение верно?

тогда другой вопрос - это утверждение верно только если объект посылающий сигнал создан от клаасса унаследованного от QThread ?
или (ну а вдруг) прокатит множественное наследовнаие QObject для сигнала и некий другой класс потока (не Qt) ??

Автор: BRE 24.3.2009, 17:41

Цитата(flankerr @ 24.3.2009, 17:32) *
ну т.е. моё предыдущие утверждение верно?

тогда другой вопрос - это утверждение верно только если объект посылающий сигнал создан от клаасса унаследованного от QThread ?
или (ну а вдруг) прокатит множественное наследовнаие QObject для сигнала и некий другой класс потока (не Qt) ??

Есть два объекта, например наследника от Object, созданные в контекстах двух разных потоках.
Когда один объект посылает сигнал второму, происходит следующее:
в очередь сообщений той нити, где находиться получатель сигнала, помещается специальное сообщение (QEvent::MetaCall), в котором содержиться информация для вызова слота. После переключения в контекст получателя (при обработке procrssEvents) происходит вызов данного слота.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)