我正在一个C++
项目上,我必须在其中实现一些custom radio communication
的代码。
这显然无法通过等待join(), a Future.get()
等来阻塞主线程,但是我真的很想弄清楚如何做到这一点而不用mutex
锁定而陷入线程地狱到处削弱性能。
是否有任何简单的方法可以像aync-await
中的.NET
那样进行?
architecture of the program
基本上是这样的:
int main()
{
App = new APP();
Ui = new UI();
Statemachine = new StateMachine();
for(;;)
{
App->update();
}
}
// The update fucntion of the App class
App::update()
{
Ui-> update();
Statemachine->CurrentState->update();;
}
// The update function of the state machine
CurrentState::update()
{
// Must not block thread
string receivedText = Radio->GetDatafromslowRadioAsync();
// Immediately continue to execute this
ImportantFunction();
AnotherImportantFucntion();
}
到目前为止,无线电在一个单独的线程中运行,不断从可以从主线程填充的队列中发送消息。