PrevUpHomeNext

Cobalt Hello @cpp


boost::cobalt

Cobalt 是一个 c++20 协程的 boost 库,提供了非常有用又简单的协程调用,供用户使用,开源免费。有了它,写 c++ 协程就像写 std::cout 那么简单,不必为复杂的设计而烦恼。

4月15日 - fayige.top

co_main

我们的 main 函数都 co 了.

cobalt::generator

cobalt::generator 有点像 std::generator,不完全相同。它们都是时间轴上的多值协程容器。惰性的。

cobalt::promise

单值的,相对而言。惰性的。

cobalt cpp 例子

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::race c++ boost @cpp

cobalt::awaitable c++ boost @cpp









首页:发一格 fayige.top









版权

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)


PrevUpHomeNext