Russian Qt Forum
Ноябрь 26, 2024, 16:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как испустить одиночный сигнал не соединяя sender-receiver ?  (Прочитано 10646 раз)
MoPDoBoPoT
Гость
« Ответ #15 : Ноябрь 30, 2009, 16:25 »

При том, есть флаг Qt::DirectConnection
Не, это нельзя. QMetaObject::invokeMethod с параметром Qt::DirectConnection эквивалентен прямому вызову слота, то есть не потокобезопасно. Так что либо Qt::QueuedConnection, либо хз.
Если не прав, поправьте.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Ноябрь 30, 2009, 17:08 »

invokeMethod по скорости далеко не из Парижской Коммуны (даже сам по себе). Плюс да, можно вызывать метод объекта др. нитки но это все равно выполняется через QApplication::postEvent (даже с DirectConnection, там еще семафор накручивается)

Торопится ребятенок Улыбающийся
Записан
niXman
Гость
« Ответ #17 : Ноябрь 30, 2009, 19:32 »

Цитировать
Не, это нельзя. QMetaObject::invokeMethod с параметром Qt::DirectConnection эквивалентен прямому вызову слота, то есть не потокобезопасно. Так что либо Qt::QueuedConnection, либо хз.
Проверил. Все работает. И синхронизация не нарушена.

Цитировать
Торопится ребятенок
не понял..
Записан
KADABRA
Гость
« Ответ #18 : Ноябрь 30, 2009, 21:21 »

Цитировать
Можно хранить указатель на объект/указатель на метод и дергать его на прямую. Можно задействовать boost, там есть и bind и function.
Не потокобезопасно! А синхронизация такого кол-ва соединений с параллельной сетью, съест еще больше ресурсов. И моего моцга Улыбающийся
При том, есть флаг Qt::DirectConnection
И зачем вам потокобезопасность, если всё в одном потоке у вас работает?
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.