Qt многопоточность

C++ qt многопоточность

При программировании отдельного потока (на базе QThread) лучше передавать данные между потоками в качестве аргументов к сигналам и слотам или просто сделать переменные классов статическими и обращаться из потоков через :: ? Какой стиль считается лучшим?

Примечание:
_lex_, под обменом сообщений вы имеете ввиду передачу данных в виде аргументов сигналам слотам (между потоками)?

Примечание:
_lex_, а что лучше использовать? Понятное дело, в блокировками немного больше возни, но лучше ли они, чем сигналы?

Примечание:
alexander, а если в сигнале передавать не сам объект, а указатель на объект, то, получается, его жирность уже не играет роли? Оптимально?
Ответы:
Если тупо обращаться к переменным из разных потоков, то будет каша. Нади либо делать блокировки, либо использовать обмен сообщениями(aka сигналами).
Upd: да
если размер объекта не велик то надежнее создавать ещё оидн инстанс и передавать как агрумент события(реализованного например например с помощью сигналов) дабы не заморачиваться с синхронизацией, если  же объект "жирноват" и/или создание ещё одного экземпляра - дорогая операция, то думаю всё же эффективнее хранить его в одном месте(например static поле) и синхронизировать к нему доспут
по указателю не стоит, _lex_ уже озвучил почему
если в объекте все поля только для чтения, то можно(ИМХО красиво) один его инстанс в разные события передавать по константной ссылке и также не заморачиваться с синхронизацией


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.