提升asio同步发布的任务

时间:2018-05-25 16:29:06

标签: boost boost-asio

让我们考虑以下情况。我有一些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);
        });
    }
}

之后我不想让执行上下文回到主函数。我认为可以使用信号量执行此类任务,但我不确定这种解决方案在我的情况下是否有效。

0 个答案:

没有答案