Я реализую мобильные приложения C++ для вызова некоторого процесса, на выполнение которого требуется некоторое время, но мне нужно, чтобы основной поток моих приложений все еще работал без каких-либо блокировок.
Вопрос: Есть ли какая-нибудь библиотека, которая могла бы просто вызвать runOnUIThread, чтобы вернуть результат в основном потоке?
Поймите, что существует много ответов, таких как опрос очереди событий сообщений, чтобы вернуть результат в основном потоке, или использование future / обещания для продолжения цикла результата. Но я не хочу, чтобы такое решение достигло цели.
Я считаю, что в способе С ++ есть некоторая функция для возврата петлителя основного потока и вызова функции с несколькими точками входа в основной поток? У меня красная статья, я не совсем понимаю, что это значит, надеюсь, кто-то может помочь.
Я прочитал этот вопрос и не понимаю. Вы спрашиваете, как передавать сообщения между потоками? Также непонятна фраза Is there any library that could just call runOnUIThread to get back the result on main thread?.
@Mikhail Не передает сообщение между потоками, но сигнализирует о функции другого потока. Например, в потоке A все данные были инициализированы, но в потоке B нет ничего, кроме обработки небольшого объема функций, как вы можете вернуть результат из потока B? Пока я знаю, что единственный способ - опросить объект, который используется потоками. Но не все могут понять или как это опросить. Я хочу построить простой способ.
@Oktaheta Потоки уведомляются с помощью переменных условий. Начните с std::condition_variable или QWaitCondition.
Поток @Mikhail GUI не может блокироваться, поэтому я не могу использовать это условие.
@Oktaheta Вы должны запустить другой поток для обработки работы. Посмотрите пример для Qt QWaitCondition, он похож на стандартную потребительскую очередь производителя.





В C++ как языке нет стандартного способа обмена сообщениями между потоками. Это означает, что вам необходимо реализовать собственное решение, которое зависит от используемых вами фреймворков.