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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызов ф-ии с return из потока  (Прочитано 4839 раз)
OKTA
Гость
« : Сентябрь 13, 2012, 15:24 »

ПОдскажите пожалуйста, как оптимальнее осуществить следующее действо! Из одного потока я вызываю функцию класса из другого потока и жду результата ее выполнения! Но соответственно, приходится ждать, пока до обработки ф-ии дойдет очередь! А как сделать, чтобы ф-ия обрабатывалась сразу же?? Через Q_Invokable с Qt::BlockingQueedConnection не катит, ибо не работает с ф-ями, которые возвращают значение(хотя я кажется не совсем понимаю, как эта связка должна работать между потоками).
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 13, 2012, 15:25 »

Используй сигнало-слотовую связь.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
OKTA
Гость
« Ответ #2 : Сентябрь 13, 2012, 15:27 »

Но ведь с сигналами и слотами не получится просто взять и вернуть значение ф-ии - придется слать сигнал, в другом потоке его ловить, вызывать слот, а обратно опять сигналом?
Записан
Serr500
Гость
« Ответ #3 : Сентябрь 13, 2012, 15:31 »

А если передать в сигнале параметром указатель на буфер, который примет результат?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Сентябрь 13, 2012, 15:40 »

Ну чтобы "выполнялась сразу" - дело нехитрое, просто вызвать ф-цию или использовать DirectConnection. Др вопрос насколько это безопасно. Напр если др нитка пишет какие-то данные, то они могут оказаться невалидными. Надо думать как лочить/разлочить, т.к. Blocking - удовольствие дорогое
Записан
OKTA
Гость
« Ответ #5 : Сентябрь 13, 2012, 15:45 »

передавать указатель - уже интереснее)
А разве простой вызов ф-ии гарантирует, что она выполнится сразу же??
Записан
mutineer
Гость
« Ответ #6 : Сентябрь 13, 2012, 15:55 »

передавать указатель - уже интереснее)
А разве простой вызов ф-ии гарантирует, что она выполнится сразу же??

Гарантирует, но выполнится она в том потоке, откуда ее вызвали
Записан
OKTA
Гость
« Ответ #7 : Сентябрь 13, 2012, 16:01 »

опять эта подстава!) никак не могу разобраться ((
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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