Cobalt 是一个 c++20 协程的 boost 库,提供了非常有用又简单的协程调用,供用户使用,开源免费。有了它,写 c++ 协程就像写 std::cout 那么简单,不必为复杂的设计而烦恼。
4月15日 - fayige.top
我们的 main 函数都 co 了.
cobalt::generator 有点像 std::generator,不完全相同。它们都是时间轴上的多值协程容器。惰性的。
单值的,相对而言。惰性的。
cobalt c++ 例子
文件名:cobalt_hello.cpp
#include <boost/cobalt.hpp> #include <iostream> namespace cobalt = boost::cobalt; class rab_pot { public: cobalt::generator<int> generator() const { for (int i=0; i<7; ++i) co_yield i; co_return -1; } cobalt::promise<int> promise() const { co_return 9; } }; cobalt::main co_main(int argc, char * argv[]) { auto rp = rab_pot{}; auto g = rp.generator(); auto p = rp.promise(); while (g) std::cout << co_await g << std::endl; std::cout << co_await p << std::endl; co_return 0; }
0 1 2 3 4 5 6 -1 9
cobalt::awaitable c++ boost @cpp
Copyright 2024 fayige.top
Distributed under the Boost Software License, Version 1.0.
(See accompanying
file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)