使用Boost协同程序实现多任务调度程序和执行程序

时间:2016-04-28 17:12:34

标签: c++ python-3.x c++11 boost c++14

我正在寻找一种方法,在一个单核中使用Boost Stackfull Coroutines作为多任务执行程序,而不是使用线程。我习惯于使用asyncio module开发Python代码,我想使用Boost协同程序(如果可能的话,Boost.Coroutine2)复制相同的行为。

我在Google上的搜索返回some old Boost documentation,解释了如何使用Boost.Coroutine lib来完成它。 由于某种原因,我不知道,the current Boost.Coroutine documentation不相等,并且不包含任何可能与旧信息有关的信息。

我是否有办法以与使用Python异步协同程序相同的方式使用Boost.Coroutines?

1 个答案:

答案 0 :(得分:0)

我喜欢在Boost.Asio中使用协程,因为后者甚至与前者有some integration

boost::asio::io_service io_service;

// ...

boost::asio::spawn(io_service, [&] (boost::asio::yield_context yield) {
    // here, the asynchronous operations causes the coroutine to yield
    std::size_t bytes = socker.async_read_some(buffer, yield);
    // do some other stuff
});

io_service.run();

Boost.Asio有自己的full example

io_service将作为执行者使用,spawn提供了使用协同程序完成所有这些操作的明确方法。