调试
用gdb/lldb
cpp
p __coro_frame
p __promise
试
Try
有三种状态:无状态,有异常,有值
.
条件变量
主要区别在简单异步
中条件变量面向Lazy
协程.在条件变量
上阻塞
协程时,不会阻塞
当前线程.用于多个协程
间交互协作.基于协程版
条件变量,多个
协程可实现典型生产者消费者
模型.
通知器
通知器是退化的条件变量
,且不依赖外部互斥锁.用通知()
唤醒阻塞的线程
.
自旋锁
自旋锁
包含Lazy
无栈协程版本及普通
线程版本.
临界区
域太大时,频繁让出可能引起性能下降.此时可增大自旋次数
来减少协程
主动让出频率.
协程交互
普通函数可以使用syncAwait(同步等待)
封装无栈协程
.
无论普通函数,有栈协程或者是无栈协程
,都可以使用.start
方式异步
非阻塞地调用协程
.
执行器
用来自定义调度,在指定的调度器中运行协程
非常简单,只需要创建协程时传递执行器
给协程即可.在Lazy
中通过via()/setEx()
可以传递执行器
;在Uthread
中设置async()
的执行器
参数传递.
指定多个协程
在多线程
中并行化执行
,一般要求用户多个λ函数
之间不存在数据竞争
.
指定多个协程
总是在当前线程
异步协作式执行,一般在函数
间存在数据竞争时用它.
latch
用来挂起
等待线程,多个有栈
协程同步.