本文主要是介绍2403C++,C++20协程通道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文
通道
是一个可用来连接协程
,实现不同协程
间通信
的并发安全队列
.
@Test
fun `test know channel`() = runBlocking<Unit> {val channel = Channel<Int>()//生产者val producer = GlobalScope.launch {var i = 0while (true) {delay(1000)channel.send(++i)println("send $i")}}//消费者val consumer = GlobalScope.launch {while (true) {val element = channel.receive()println("receive $element")}}joinAll(producer, consumer)
}
该示例很简单,生产者
协程和消费者
协程通过通道
通信.
C++20
协程有通道
吗?与go
和kotlin
那样的通道
.
答案是:有,就在yalantinglibs
的coro_io
里面.
来看看C++20
协程通道
的用法:
auto executor = coro_io::get_global_block_executor()->get_asio_executor();asio::experimental::channel<void(std::error_code, int)> channel(executor, 1000);co_await coro_io::async_send(ch, 42);auto [ec, val] = co_await coro_io::async_receive<int>(channel);assert(val == 42);
创建了个容量为1000
的通道
,后续就可通过该通道
实现协程间
通信了.
这就是C++20
协程通道
,用法和go,kotlin
的通道
类似.
这篇关于2403C++,C++20协程通道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!