原文:C++20协程实例:协程化的IOCP服务端/客户端

VC支持协程已经有一段时间了,之前一直想不明白协程的意义在哪里,前几天拉屎的时候突然灵光一闪: 以下是伪代码: 如果把IO库对外的接口做成上面这样,那岂不是看起来和最简单的阻塞模型相同的代码结构,但它的内在其实是异步的,用单线程相同的代码就能支撑一堆连接通信。 所以才有了接下来的研究 闲出屁才研究的 ,好在研究出成品了。 最终我也明白协程的意义了: 协程化的库越多,C 程序员的门槛会越低,做上层开 ...

2021-12-03 16:12 3 888 推荐指数:

查看详情

C++20

C++20 简介 ​ C++20只是提供机制,而不是提供库。C++20是无栈,无栈是一个可以挂起/恢复的特殊函数,是函数调用的泛化,且只能被线程调用,本身并不抢占内核调度。 ​ C++20 提供了三个新关键字(co_await、co_yield ...

Sun Apr 17 00:24:00 CST 2022 0 1560
比物理线程都好用的C++20,你会用吗?

摘要:事件驱动(event driven)是一种常见的代码模型,其通常会有一个主循环(mainloop)不断的从队列中接收事件,然后分发给相应的函数/模块处理。常见使用事件驱动模型的软件包括图形用户界面(GUI),嵌入式设备软件,网络服务端等。 本文分享自华为云社区《C++20 ...

Mon May 17 18:32:00 CST 2021 4 1436
Swoole 中使用 TCP 异步服务器、TCP 服务器、TCP 同步客户端、TCP 客户端

TCP 异步风格服务器 异步风格服务器通过监听事件的方式来编写程序。当对应的事件发生时底层会主动回调指定的函数。 由于默认开启,在回调函数内部会自动创建,遇到 IO 会产生调度,异步风格服务器无法保证调度顺序,所以在遇到并发时无法保证事件执行顺序。 运行并测试 TCP 异步 ...

Fri Jun 26 04:51:00 CST 2020 0 582
C++20解糖 - 动手实现1 - Future和Promise

std::future和promise在C++20里面没法直接用的唯一原因就是不支持then,虽然MSVC有一个弱智版开线程阻塞实现的future.then,能then了但不保序,而且libstdc++也用不了。folly之类的库有靠谱的实现,但是功能太齐全太复杂,不适合新手学习。因此我们先从弱智 ...

Sat May 16 22:36:00 CST 2020 0 649
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM