crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Межпоточное взаимодействие (Qt 4.3.3)
flankerr
  опции профиля:
сообщение 24.3.2009, 17:04
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


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

В контексте какого потока будет вызван слот объекта класса А ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 24.3.2009, 17:14
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


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

В контексте той нити, где он создан.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 24.3.2009, 17:22
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


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

Сообщение отредактировал flankerr - 24.3.2009, 17:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 24.3.2009, 17:23
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


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

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

Сообщение отредактировал BRE - 24.3.2009, 17:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 24.3.2009, 17:32
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


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

тогда другой вопрос - это утверждение верно только если объект посылающий сигнал создан от клаасса унаследованного от QThread ?
или (ну а вдруг) прокатит множественное наследовнаие QObject для сигнала и некий другой класс потока (не Qt) ??
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 24.3.2009, 17:41
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


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

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

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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 16:19