当前位置: 首页 > news >正文

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协程有通道吗?与gokotlin那样的通道.
答案是:有,就在yalantinglibscoro_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通道类似.

http://www.lryc.cn/news/312655.html

相关文章:

  • C语言从入门到实战——预处理详解
  • 【LabVIEW FPGA】CIC滤波器
  • 砝码称重 蓝桥杯
  • AmzTrends x TiDB Serverless:通过云原生改造实现全局成本降低 80%
  • [最佳实践] Windows上构建一个和Linux类似的Terminal
  • 租赁系统|手机租赁软件|租赁系统功能开发
  • 【设计模式 04】建造者模式
  • Python使用错误总结
  • 【Java EE初阶三十】JVM的简单学习
  • thinkphp5水平分割表partition,以及查询操作
  • docker部署aria2-pro
  • vue中Mixins
  • linux常用指令(定期更新)
  • 【项目】图书管理系统
  • 华为OD机试 - 疫情扩散时间计算 - 矩阵(Java 2024 C卷 200分)
  • [数据集][图像分类]棉花叶子病害分类数据集2293张4类别
  • 《辐射4》是一款什么样的游戏 怎样在mac电脑上玩到《辐射4》辐射4攻略 辐射4开局加点 怎么在Mac电脑玩Steam游戏
  • 视频推拉流EasyDSS平台直播通道重连无法转推的原因排查与解决
  • Javaweb之SpringBootWeb案例之自动配置案例的自定义starter测试的详细解析
  • java包的相关概念
  • window搭建本地mongo数据库并导入数据
  • 如何为Android车载应用开发通知?
  • centos上部署k8s
  • 网络安全: Kali Linux 进行 MSFvenom 程序利用
  • 浅显易懂C语言指针!!!(三)
  • 01 LM 算法及 Cpp 实现
  • 【网络安全架构】互联网正对中国社会、经济、文化等各个领域产生巨大影响‘
  • 【笔记】Android ServiceStateTracker 网络状态变化逻辑及SPN更新影响
  • 2PC和3PC的区别是什么
  • redis未设置密码被植入挖矿脚本