2308C++学习简单协程文档

调试

gdb/lldb

cpp 复制代码
p __coro_frame
p __promise

Try有三种状态:无状态,有异常,有值.

条件变量

主要区别在简单异步中条件变量面向Lazy协程.在条件变量阻塞协程时,不会阻塞当前线程.用于多个协程间交互协作.基于协程版条件变量,多个协程可实现典型生产者消费者模型.

通知器

通知器是退化的条件变量,且不依赖外部互斥锁.用通知()唤醒阻塞的线程.

自旋锁

自旋锁包含Lazy无栈协程版本及普通线程版本.
临界区域太大时,频繁让出可能引起性能下降.此时可增大自旋次数来减少协程主动让出频率.

协程交互

普通函数可以使用syncAwait(同步等待)封装无栈协程.

无论普通函数,有栈协程或者是无栈协程,都可以使用.start方式异步非阻塞地调用协程.

执行器

用来自定义调度,在指定的调度器中运行协程非常简单,只需要创建协程时传递执行器给协程即可.在Lazy中通过via()/setEx()可以传递执行器;在Uthread中设置async()执行器参数传递.

指定多个协程多线程并行化执行,一般要求用户多个λ函数之间不存在数据竞争.

指定多个协程总是在当前线程异步协作式执行,一般在函数间存在数据竞争时用它.

latch

用来挂起等待线程,多个有栈协程同步.

相关推荐
范纹杉想快点毕业5 分钟前
实战级ZYNQ中断状态机FIFO设计
java·开发语言·驱动开发·设计模式·架构·mfc
马猴烧酒.1 小时前
【面试八股|Java集合】Java集合常考面试题详解
java·开发语言·python·面试·八股
以卿a1 小时前
C++(继承)
开发语言·c++·算法
lly2024061 小时前
XQuery 选择和过滤
开发语言
盐焗西兰花1 小时前
鸿蒙学习实战之路-Reader Kit构建阅读器最佳实践
学习·华为·harmonyos
测试工程师成长之路1 小时前
Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)
java·开发语言·selenium
czxyvX1 小时前
017-AVL树(C++实现)
开发语言·数据结构·c++
深蓝海拓2 小时前
PySide6从0开始学习的笔记(二十七) 日志管理
笔记·python·学习·pyqt
你真是饿了2 小时前
1.C++入门基础
开发语言·c++
天天进步20152 小时前
Python全栈项目:实时数据处理平台
开发语言·python