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

调试

gdb/lldb

cpp 复制代码
p __coro_frame
p __promise

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

条件变量

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

通知器

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

自旋锁

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

协程交互

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

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

执行器

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

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

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

latch

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

相关推荐
xiaolang_8616_wjl12 分钟前
c++文字游戏_闯关打怪
开发语言·数据结构·c++·算法·c++20
WJ.Polar19 分钟前
Python数据容器-list和tuple
开发语言·python
FrostedLotus·霜莲33 分钟前
C++主流编辑器特点比较
开发语言·c++·编辑器
超级码.里奥.农35 分钟前
零基础 “入坑” Java--- 七、数组(二)
java·开发语言
KENYCHEN奉孝43 分钟前
Rust征服字节跳动:高并发服务器实战
服务器·开发语言·rust
挺菜的1 小时前
【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
java·开发语言·算法
Green1Leaves2 小时前
pytorch学习-9.多分类问题
人工智能·pytorch·学习
妮妮喔妮2 小时前
【无标题】
开发语言·前端·javascript
慕y2742 小时前
Java学习第十五部分——MyBatis
java·学习·mybatis
fie88892 小时前
浅谈几种js设计模式
开发语言·javascript·设计模式