Продолжение вызова стиля, как .NET async-await в C ++? - PullRequest
0 голосов
/ 17 января 2019

Я работаю над проектом 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();
}

На данный момент радио работает в отдельном потоке, непрерывно отправляя сообщения из очереди, которые могут быть заполнены из основного потока.

...