code#include coroutine #include future #include iostream #include QApplication.h /* * 自定义协程等待体 */ struct MyWaiter { int value; constexpr bool await_ready() const noexcept { std::cout Step 5\n; return false; // true准备好了不挂起false挂起 } bool await_suspend(std::coroutine_handle handle) { // 协程挂起时调用 // 切换线程 std::cout Step 6\n; std::async([] { std::cout Step 7\n; std::this_thread::sleep_for(std::chrono::seconds(1)); handle.resume(); // 延迟1s后恢复协程 }); std::cout Step 11\n; return true; // 挂起 } int await_resume() { // 协程恢复时调用 std::cout Step 8\n; return value; } }; /* * 自定义返回值 * 需要开发者自行保证协程在挂起后续恢复执行时参数引用或者指针指向的对象仍然存活 * */ struct GenIntIter { struct promise_type { int value_; promise_type() { std::cout Step 1\n; } GenIntIter get_return_object() { std::cout Step 2\n; return GenIntIter { *this }; } static GenIntIter get_return_object_on_allocation_failure() { // new 分配失败 promise_type result; result.value_ -1; return GenIntIter(result); } auto initial_suspend() const noexcept { // 运行前 std::cout Step 3\n; return std::suspend_never {}; // 挂起 // return MyWaiter { .value value_ }; } auto final_suspend() const noexcept { // 析构前 std::cout Step 10\n; // 如果在 final_suspend 那里停下手动调用 coro.destroy()不然就会漏内存 // 如果已经final_suspend了再coro.destroy()会seg fault return std::suspend_always {}; // 挂起 // return std::suspend_never {}; // 不挂起 } auto yield_value(int value) { value_ value; return std::suspend_always {}; // 挂起 } void return_value(int value) { value_ value; } void unhandled_exception() { std::terminate(); } }; explicit GenIntIter(promise_type p) : handle_(std::coroutine_handlepromise_type::from_promise(p)) { } ~GenIntIter() { if (handle_ !handle_.done()) handle_.destroy(); } int next() { if (!handle_ || handle_.done()) return -1; handle_(); return handle_.promise().value_; } int val() { return handle_.promise().value_; } std::coroutine_handlepromise_type handle_; }; // 协程函数 GenIntIter foo() { for (int i 0; i 10; i) { co_yield i; } co_return -1; } int work() { return 5; } // 线程异步 void thread() { auto n std::async(work); n.wait(); } // 协程异步 GenIntIter corioutine(int val) { std::cout Step 4\n; auto n co_await MyWaiter { .value val }; std::cout Step 9\n; co_return n; } int main(int argc, char** argv) { corioutine(5); std::cout Step 12\n; // 当 caller 调用一个协程的时候会先创建一个协程帧 // 协程帧会构建 promise 对象 // 再通过 promise对象产生 return object。 auto handle foo(); do { handle.val(); } while (-1 ! handle.next()); QApplication app(argc, argv); return app.run; }参考https://zhuanlan.zhihu.com/p/657993277https://github.com/tearshark/librfhttps://github.com/naasking/async.hhttps://github.com/xiaoliang314/libatask/tree/master/lib
企业数字化 ERP 产品动态
相关推荐
python fonttools字体多语言解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/11 12:53:36
Mysql基础 02 外键、多表查询、索引 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 11:10:49
Hydra Launcher 安装配置全攻略:从克隆代码到管起你的游戏库 Hydra Launcher 安装配置全攻略:从克隆代码到管起你的游戏库 【免费下载链接】hydra Hydra Launcher is an open-source gaming platform created to be the single tool that you need 项目地址: https://gitcode.com/GitHub_Trending/hy/hydra
游戏文件散落… · 2026/11/8 3:13:21
许昌应届生问留队电工证有用吗?真实经历告诉你答案 许昌应届生问留队电工证有用吗?真实经历告诉你答案 你是不是也担心自己学历不高,连电工证都报不上名?其实,留队电工证对于许昌这类应届工程类毕业生来说,不仅有用,而且是进阶的“敲门砖”。下面我结合自己和身边人的真实经历,一步步告诉你这个证到底值… · 2026/11/11 12:53:24
电工证个人怎么入账郑州报考避坑指南 电工证个人怎么入账郑州报考避坑指南 你是不是也遇到过这样的问题: 不知道去哪报名怕被中介坑 ?电工证作为特种作业操作证中最重要的证书之一,不仅关系到你的职业发展,还直接影响到能否合法上岗作业。特别是在郑州这样的大城市,电工证报考竞争激烈,中… · 2026/11/11 12:53:24
银川哪有电工证学校怎么考?学历不高也能拿高含金量证书 银川哪有电工证学校怎么考?学历不高也能拿高含金量证书 你是不是总担心自己学历不高,根本考不上电工证?其实不然,很多从事一线工作的朋友,学历并不高,但照样能拿到含金量十足的特种作业操作证。银川哪有电工证学校?其实你身边就有,关键在于你能不能找… · 2026/11/11 12:53:24
低压电工证考过的难吗 低压电工证值不值得考 低压电工证考过的难吗 低压电工证值不值得考 实操考试心里没底怕挂科?低压电工证考试真的难吗?值不值得考?这些问题几乎每个想报考低压电工证的小伙伴都问过。尤其是刚接触电力作业的新手,面对考试和实操操作,难免会感到紧张甚至焦虑。今天就从安阳房建… · 2026/11/11 12:53:24
低压电工证考过的难吗?培训机构怎么选,考前押题别踩坑 低压电工证考过的难吗?培训机构怎么选,考前押题别踩坑 你是不是正盯着手机屏幕,心里直打鼓:“低压电工证考过的难吗?培训机构怎么选?怕不是又被中介忽悠了?”别急,今天咱们就来聊聊这个事,从怎么报名、怎么备考,到怎么避开那些“坑”,手把手带你搞… · 2026/11/11 12:53:24
美国电工证考试条件如何考过?电子证书怎么拿? 美国电工证考试条件如何考过?电子证书怎么拿? 怕考不过白交培训费?美国电工证考试条件不透明,备考没方向,一不小心就浪费钱。别急,这篇文章帮你理清【美国电工证考试条件】,告诉你怎么拿电子证书,少走弯路。… · 2026/11/11 12:52:24
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/11 12:18:07
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43
_中职电工证最新政策解读 中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52
昆明电工证培训价格值不值得考?老电工告诉你真相 昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52
特种电缆张工网上查询全攻略:外省证如何转过来 特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 17:00:47