Я работаю над проектом 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();
}
На данный момент радио работает в отдельном потоке, непрерывно отправляя сообщения из очереди, которые могут быть заполнены из основного потока.