результат выполнения функции в другом потоке???
В общем водные такие: есть 2 потока, в первом потоке наступает момент когда надо выполнить функцию в существующем втором потоке и получить её результат, при этом 1 поток можно даже приостановить до получения результата со 2 потока, но нельзя выходить из функции в которой понадобились данные со второго потока.
в псевдокоде:
void function_a(){
....
QFuture<QString> future = что-то типа QtConcurrent::run только в определенном потоке;
....
}
Как бы как просто запустить функцию в определенном потоке проблем не вижу, можно использовать систему событий, или с помощью QMetaObject::invokeMethod
А вот как дождаться выполнения, и получить результат её выполнения при этом не выходя из текущей функции не догоняю.
А чем это отличается от просто вызова функции? П.с. не знаю как по нормальному такое сделать, но наверное передать в другой поток мьютекс залочить там, ну и в основном после запуска потока , а для надёжность ещё и таймер добавить чтобы второй поток успел залочить мьютекс. Но попахивает все это очень странно.
Бери результат от future
Спасибо. Интересная мысль. Сейчас реализую, чуток по другому, но направление тоже. Потом отпишусь.
Зачем? QEventLoop специально для таких случаев сделан. Сигналы и слоты тоже стандартные вещи, зачем изобретать веломипед?
Обсуждают сегодня