【发布时间】:2014-11-25 11:20:44
【问题描述】:
当使用 Boost.Asio stackful coroutines 时,我如何“手动”让另一个协程或异步操作有机会运行?例如,在发送对从 TCP 套接字接收的命令的响应之前,我需要执行长时间计算:
asio::spawn(strand_, [this, self](asio::yield_context yield)
{
char data[256];
while (socket_.is_open())
{
size_t n = socket_.async_read_some(boost::asio::buffer(data),
yield);
if (startsWith(data, "computePi"))
{
while (!computationFinished)
{
computeSomeMore();
yield; // WHAT SHOULD THIS LINE BE?
}
storeResultIn(data);
boost::asio::async_write(socket_, boost::asio::buffer(data, n),
yield);
}
}
});
【问题讨论】:
标签: c++ c++11 boost boost-asio coroutine