让我们考虑以下情况。我有一些master-function调用一系列异步操作 - function chain()。在这个链中,我不接收10个数据包,调用数据包的异步处理并再次排队此操作。
void master
{
chain(10);
wait_for_chain_completion();
// Do some other work only after complition of last processor
}
void chain(int n)
{
if (n > 0)
{
socket_.async_receive(buffer, [this,n](const boost::system::error_code& error)
{
chain (--n);
boost::asio::post(io_, packet_processor);
});
}
}
之后我不想让执行上下文回到主函数。我认为可以使用信号量执行此类任务,但我不确定这种解决方案在我的情况下是否有效。