crossplatform.ru

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

> Синхронизация при сигналах и слотах в разных потоках
Алексей1153
  опции профиля:
сообщение 22.1.2013, 12:59
Сообщение #1


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  



Вопрос: когда сигнал и слот имеют аргументы по значению (то есть, не указатели и не ссылки), нужно ли выполнять межпоточную синхронизацию, если я из одного потока шлю сигнал в слот другого?

Понимаю, что глупый вопрос, поэтому задам его по-другому: в каких случаях при использовании сигнала в одном потоке и слота в другом требуется синхронизация ?

Ситуация простейшая - передаю, к примеру, QString по значению из потока в поток

Сообщение отредактировал Алексей1153 - 23.1.2013, 8:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 24.1.2013, 9:57
Сообщение #2


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


выходит, если указать Qt::QueuedConnection , то аргументы по значению можно передавать без синхронизации

а вот указатели на локальные данные при Qt::QueuedConnection точно нельзя по определению

так, а это что за комиссия )
Цитата
Qt::QueuedConnection 2
Слот вызывается когда элемент управления возвращает управление в цикл обработки событий в потоке получателя. Слот выполняется в потоке получателя.


у меня поток не использует контролы и цикл обработки событий. Или это неважно ?

Сообщение отредактировал Алексей1153 - 24.1.2013, 9:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iReset
  опции профиля:
сообщение 24.1.2013, 10:40
Сообщение #3


Участник
**

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

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




Репутация:   2  


Цитата(Алексей1153 @ 24.1.2013, 10:57) *
выходит, если указать Qt::QueuedConnection , то аргументы по значению можно передавать без синхронизации
а вот указатели на локальные данные при Qt::QueuedConnection точно нельзя по определению
Все можно передавать безопасно, только пользоваться с оглядкой :).

Цитата(Алексей1153 @ 24.1.2013, 10:57) *
так, а это что за комиссия )
Цитата
Qt::QueuedConnection 2
Слот вызывается когда элемент управления возвращает управление в цикл обработки событий в потоке получателя. Слот выполняется в потоке получателя.

Судя по оригиналу
Цитата
The slot is invoked when control returns to the event loop of the receiver's thread. The slot is executed in the receiver's thread.
тут неправильный перевод. Должно быть
Цитата
Слот вызывается, когда управление возвращается циклу обработки событий в потоке получателя. Слот выполняется в потоке получателя.


Цитата(Алексей1153 @ 24.1.2013, 10:57) *
у меня поток не использует контролы и цикл обработки событий. Или это неважно ?
Ну контролы фиг с ними, а как ты без цикла обработки событий хочешь получить сигнал? Если поток на основе QThread, то он сам запускает свой цикл обработки событий (тут, второй абзац).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Алексей1153   Синхронизация при сигналах и слотах в разных потоках   22.1.2013, 12:59
- - Litkevich Yuriy   если по значению, то передаваемая величина просто ...   23.1.2013, 3:46
- - Алексей1153   то есть, если в параметрах нет ссылок и указателей...   23.1.2013, 8:24
- - ssoft   1. Если передача параметров происходит по значению...   24.1.2013, 9:01
|- - iReset   Цитата(ssoft @ 24.1.2013, 10:01) 1. Если ...   24.1.2013, 9:40
- - Алексей1153   ssoft, вот я именно про случай без ссылок. Я в дет...   24.1.2013, 9:12
- - Алексей1153   выходит, если указать Qt::QueuedConnection , то а...   24.1.2013, 9:57
|- - iReset   Цитата(Алексей1153 @ 24.1.2013, 10:57) вы...   24.1.2013, 10:40
- - Алексей1153   с циклом - понятно, ок Ну, видимо, класс потока с...   24.1.2013, 10:42
- - Авварон   iReset Всё там у QString нормально. У шаред классо...   24.1.2013, 22:04
|- - iReset   Цитата(Авварон @ 24.1.2013, 23:04) Всё та...   25.1.2013, 8:45
- - Авварон   Лень в доку лезть, а какие ф-ии у QString нереентр...   25.1.2013, 9:28
- - Алексей1153   Авварон, он, наверное, имел в виду не QString, а ю...   25.1.2013, 11:28
- - iReset   http://www.doc.crossplatform.ru/qt/4.7.x/qstring.h...   25.1.2013, 12:38
- - Авварон   Прикольно, даже не знал, что такие есть, всегда ис...   25.1.2013, 17:38


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


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




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