![]() |
|
|
![]()
|
|
| hexzo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
В каком треде срабатывает слот? Может ли один и тот же слот исполняться одновременно, то есть если будет два сигнала подряд связанных с одним и тем же слотом. Короче там есть подводные камни?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| hexzo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Как понимать родство треда с объектом?
in the thread which the receiving object has affinity |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
hexzo, чтобы это понять, надо читать полностью, а не урывками:
|
|||
|
||||
| hexzo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Слот срабатывает сразу же в том же потоке, в котором происходит вызов emit. Но если слот находится в специальных классах типа QTcpSocket, QTimer, то он сработает при следующем тике их встроеного лупа.
Я правильно прочитал? Это сообщение отредактировал(а) hexzo - 5.10.2011, 16:52 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
hexzo, подозреваю, что нет.
Если отправитель сигнала находится в том же потоке, что и приемник, то приемник принимает сигнал сразу. Если отправитель сигнала находится в потоке отличном от потока приемника, то сигнал добавляется в очередь сигналов потока приемника. И доставляется только при обработке этой очереди. Таким образом, если в потоке приемника нет eventLoop'а, то ни один сигнал не будет доставлен. Объект класса QThread по умолчанию находится в том потоке, в котором был вызван new QThread для него. Т.е. он находится не в новом потоке, а в старом. |
|||
|
||||
| hexzo |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
bsa
А, помоему ты тоже самое сказал что и я.
Если сигнал вызывается в том же треде с которым родство у получателя.
То слот срабатывает сразу в том же треде.
Некоторые негуишные классы имеют свой встроенный луп. Если принадлежность отправителя и получателя к разным тредам разная, то
слот вызывается при следующем тике лупа треда связаного отношением родства с получателем. Это сообщение отредактировал(а) hexzo - 6.10.2011, 11:21 |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |