使用asio协程与用户定义的数据结构而不是(asio)套接字?

时间:2015-12-02 22:22:33

标签: c++ boost-asio coroutine

Boost asio的协程示例显示了如何将yield上下文作为完成处理程序传递给套接字:

// coroutine which demultiplexes into tcp and udp 
void packet_processor(boost::asio::yield_context yield)
{
    for (;;)
    {
        auto packet = input_queue.pop(yield); 
        if (packet.is_tcp())
        {
            tcp_queue.push(packet);
        }
        else if (packet.is_udp())
        {
            udp_queue.push(packet);
        }
    }
}

// coroutine which handles UDP datagrams
void udp_processor(boost::asio::yield_context yield)
{
    for (;;)
    {
        auto udp_segment = udp_queue.pop(yield);
        process(udp_segment);
    }
}


// coroutine which handles tcp segments
void tcp_processor(boost::asio::yield_context yield)
{
    for (;;)
    {
        auto tcp_segment = tcp_queue.pop(yield);
        process(tcp_segment);
    }
}

是否可以实现用户定义的数据结构以提供与套接字相同的功能?

我的目标是实现一个(单线程)数据包处理,其中协程就像光纤一样:

maxAge = j

上面的代码可以使用吗?

0 个答案:

没有答案