在C ++中像.NET async-await这样的延续样式调用?

时间:2019-01-17 20:24:05

标签: c++ multithreading async-await future continuations

我正在一个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();
}

到目前为止,无线电在一个单独的线程中运行,不断从可以从主线程填充的队列中发送消息。

0 个答案:

没有答案