【发布时间】:2019-07-23 14:06:02
【问题描述】:
一个简单的函数:
awaitable<std::size_t> write(const std::vector<uint8_t>& data)
{
auto token = co_await this_coro::token();
return co_await async_write(serialport_, buffer(data), token);
}
可以使用co_await write(my_data)等待。
当我使用任何异步 Boost ASIO 函数时,此方法有效。
如果异步函数是来自某个不相关库的回调,人们将如何使用这种模式?
代码可能类似于:
awaitable<bar> foo()
{
auto token = co_await this_coro::token();
return co_await third_party_callback;
}
用法类似于auto result = co_await foo()。
我很难弄清楚最简单/最干净的方法是什么。
额外问题:Boost ASIO 的协程 API(例如令牌)、Boost 的协程库和 Coroutines TS 之间有什么关系?
【问题讨论】:
标签: c++ boost boost-asio coroutine boost-coroutine