我正在寻找一种方法,在一个单核中使用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?
答案 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
提供了使用协同程序完成所有这些操作的明确方法。