标签: async
与该标签相关的所有文章 "async".
-
C++ 协程:语言机制、陷阱与实现边界
C++20 协程的本质是编译器把带 coawait/coyield/coreturn 的函数重写成状态机,把跨 suspend 存活的变量打包到一个堆上的 frame——这是语言级 stackless 协程,不是 Goroutine 式 stackful。标准库只给了 coroutinehandle / suspendalways / suspendnever 这几块地基,不给 Task<T>、不给 Generator(C++23 才加)、不给 executor、不给调度器。要在网络服务器里用,必须自己实现 Task<T>(严格遵守 symmetric transfer 否则链式 coawait 直接栈溢出)+ IoUringAwaiter(绑定到 reactor)。三大杀手级陷阱:协程参数必须按值传(引用参数跨 suspend 必悬挂)、finalsuspend 必须 suspend_always(否则 double-free)、热路径不能依赖 HALO,需要自定义 operator new。
-
asio(四):异步模型演进-从回调到C++20协程
Asio 的异步操作只写一次实现,通过 asyncresult<CompletionToken, Signature> trait 自动适配回调、stackful 协程、stackless 协程、C++20 协程和 future。这是 Asio 最精妙的设计——一个 asyncread 实现同时支持五种异步风格,新增风格只需特化一个 trait。