【C++20】从0开始自制协程库,有手就行(上)

作者: 双笙子佯谬分类: 计算机技术 发布时间: 2024-03-21 04:19:30 浏览:16299 次

【C++20】从0开始自制协程库,有手就行(上)

罗斯刀子:
沙发,有效解决了我的毕设难产问题[doge]

细语道黄梅:
想问一下,如果 main 函数调用协程 hello, hello 调用协程 hello1, hello1 yield_value() 时只是将自己挂起,为什么会直接回到 main?而不是 hello

【回复】因为yield_value返回了suspend_always,编译器检测到suspend_always时会挂起hello返回调用resume的地方
黑色的电风扇:
说到concept, 我发现写一个能匹配 额 就是类似线程池 反正就是有异步接口的enqueue(F f, Args args...) 的任务容器好像有难度, 似乎是因为没办法指定F, Args的所有类型... 可以讲讲这个吗

【回复】requires std::invovable<F, Args...>就可以了
王溯溯溯溯溯溯:
协程可以悬停和重入的特点使得业务逻辑可以不因为IO等分离,可以这么理解吗?个人有个疑问就是协程怎么和多线程结合呢

【回复】正确,可以创建一个线程池,让多个线程分别resume已经ready的协程
【回复】回复 @双笙子佯谬 :谢谢小彭老师,笔芯
为所欲为丶_:
小彭老师的课知识密度好大,1.5倍速一个多小时跟着视频敲,一看进度条,才过了20多分钟[笑哭]

女拳出击QAQ:
小彭老师 可以讲下 cpp sender receiver 模式的 excutor 吗,感觉是一个很强大的异步模型,但是代码完全看不懂[大哭][大哭][大哭]

【回复】看了一下,感觉就是在没有协程语法支持的情况下试图模拟协程,功能十分有限,基本就实现了个then,when_all,现在他能做的协程都能做,他不能做的协程也能做,没必要再学
离挽溪:
没学过协程的一点都看不懂,还以为把下集给传上来了[大哭]

Lcentury001:
支持[打call],期待小彭老师能基于协程扩展实现一个简单服务器[喜欢]

IshtarGIN:
太好 协程的文档文章前前后后看了好多遍绕晕了 这就来学习[打call]

王溯溯溯溯溯溯:
小彭老师,我有个疑问,就是when_all_helper为什么要返回第一个协程或者最后一个的句柄呀。所有的协程注册好了等待调度执行也可以吧?这样是不是有点高耦合?我们还要知道是将控制流传给了第一个。

【回复】返回句柄和直接resume这个句柄等价,区别在于返回的句柄由编译器保证不会栈溢出
封梧鸣:
2.5倍速比较正常[G2·IEM成都限定收藏集表情包_ni~ko]

庄仪浩:
想请教下小彭老师,我用 g++10.4编译没通过,您用的是什么编译呢

喝卡里唔:
debug(), "xxxx"; //这个语法是哪节课讲过的嘛。

【回复】是小彭老师写的库,用宏和函数去debug

C++ 编程 C++20 并发 promise 定时器 coroutine await 协程 异步

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!