公司一些老项目使用了 brpc,写全异步的时候被回调地狱折磨,一想到现在都快 c++23 了,何不用协程解决问题,而现有的开源协程框架都要求从底层用起(很难与 brpc 结合)
看完c++20 协程文档(感觉每一句都挺重要。。),有了用引用计数方案管理协程的想法
简单的说,就是当一个协程被 co_await 挂起后,由最晚运行的回调线程负责恢复,这样就不用从底层开始管理协程生命周期了
所有包装使用的 异步函数 必须满足
void func(int a, std::function<void(int)) cb)
https://github.com/kkHAIKE/sco/blob/main/main.cpp
解释:
some(1, 2).start_root_in_this_thread();
在一个线程中开始启动协程co_await sco::call_with_callback(&test, a, b, sco::cb<void(int,int)>(c, d));
包装 异步函数 test输出
test return
some end
2,3
test return
some return
3,4
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.