Приветствую! Волнует одна большая для меня проблема которую никак не получается решить. Речь идет о многопоточности а именно пытаюсь реализовать отдельный поток при условии что главный поток будет ждать его выполнение главное не блокируя сам UI. Пробовал много разных вариантов std а так же несколько вариантов из QT. На последнем на чем остановился, следующий код
template <class FUNCTION, class... Args>
auto runAsync(FUNCTION&& func, Args&&... args) -> decltype(QtConcurrent::run(std::forward<FUNCTION>(func), std::forward<Args>(args)...))
{
QEventLoop eventLoop;
auto future = QtConcurrent::run(std::forward<FUNCTION>(func), std::forward<Args>(args)...);
auto futureWatcher = new QFutureWatcher<void>();
QObject::connect(futureWatcher, &QFutureWatcher<void>::finished, [=]()
{
futureWatcher->deleteLater();
});
futureWatcher->setFuture(future);
eventLoop.exec();
futureWatcher->deleteLater();
return future;
}
..
auto thr = runAsync([=]()
{
QThread::currentThread()->sleep(5);
//Sleep(5000);
return "200";
});
Проблема заключается в том что главный поток якобы зависает при выполнении функции runAsync(..). Возможно кто понимает о чем я говорю и сможет мне помочь. С Уважением
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости