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

调试

gdb/lldb

cpp 复制代码
p __coro_frame
p __promise

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

条件变量

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

通知器

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

自旋锁

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

协程交互

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

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

执行器

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

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

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

latch

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

相关推荐
岁忧1 小时前
macOS配置 GO语言环境
开发语言·macos·golang
朝朝又沐沐2 小时前
算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
开发语言·数据结构·c++·算法·链表
魔尔助理顾问2 小时前
系统整理Python的循环语句和常用方法
开发语言·后端·python
Ares-Wang2 小时前
JavaScript》》JS》 Var、Let、Const 大总结
开发语言·前端·javascript
遇见尚硅谷3 小时前
C语言:*p++与p++有何区别
c语言·开发语言·笔记·学习·算法
SkyrimCitadelValinor3 小时前
c#中让图片显示清晰
开发语言·c#
艾莉丝努力练剑4 小时前
【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
c语言·开发语言·数据结构·学习·算法·链表·排序算法
狐小粟同学4 小时前
JavaEE--3.多线程
java·开发语言·java-ee
jz_ddk4 小时前
[HarmonyOS] 鸿蒙LiteOS-A内核深度解析 —— 面向 IoT 与智能终端的“小而强大”内核
物联网·学习·华为·harmonyos
颜颜yan_4 小时前
Python面向对象编程详解:从零开始掌握类的声明与使用
开发语言·redis·python