05 2020 档案
C++20协程解糖 - 动手实现协程3 - generator和co_yield
摘要:本期实现的功能很简单,协程的重头都在co_await和异步操作上,generator本身是一个很轻的东西如果你看到这行文字,说明这篇文章被无耻的盗用了(或者你正在选中文字),请前往 cnblogs.com/pointer-smq 支持原作者,谢谢基本结构generator和future/promise的模式的区别在于,future/promise的核心数据存在堆分配的shared_state里,协... 阅读全文
posted @ 2020-05-24 13:01 PointerSMQ 阅读(1188) 评论(0) 推荐(1)
C++20协程解糖 - 动手实现协程2 - 实现co_await和co_return
摘要:在开始之前,我们先修复上一篇文章中的一个bug,SharedState::add_finish_callback中post_all_callbacks应当提前判断settled,否则会在未设置结果的情况下添加callback,callback也会被立即posttemplateclass SharedState : public SharedStateBase { // ... // p... 阅读全文
posted @ 2020-05-22 23:19 PointerSMQ 阅读(1233) 评论(0) 推荐(1)
C++20协程解糖 - 动手实现协程1 - Future和Promise
摘要:std::future和promise在C++20里面没法直接用的唯一原因就是不支持then,虽然MSVC有一个弱智版开线程阻塞实现的future.then,能then了但不保序,而且libstdc++也用不了。folly之类的库有靠谱的实现,但是功能太齐全太复杂,不适合新手学习。因此我们先从弱智版future promise schedular开始,从源头讲解如何实现协程相关设施。如果你看到这行... 阅读全文
posted @ 2020-05-16 14:36 PointerSMQ 阅读(1435) 评论(0) 推荐(1)
C++20协程解糖 - 调用流程和一些细节
摘要:本文的前置知识:你至少要知道其他语言的无栈协程是如何实现的,如C#,python。lua不算,lua实际上是有栈协程(对lua虚拟机有栈) 阅读全文
posted @ 2020-05-10 15:38 PointerSMQ 阅读(1156) 评论(0) 推荐(0)
C++20协程解糖 - 细节简化版
摘要:我已经花了10分钟完全了解了C++20协程!这篇文章仅展示简化版的控制流解糖,不展示coroutine_handle和各种awaitable的内部实现 阅读全文
posted @ 2020-05-09 14:50 PointerSMQ 阅读(1159) 评论(0) 推荐(1)