视频解析:linux系统下协程的实现与原理剖析训练营(上)linux系统下协程的实现与原理剖析训练营(下)1 导论使用 C++ 来编写高性能的网络服务器程序,从来都不是件很容易的事情。在没有应用任何网络框架,从 epoll/kqueue 直接码起的时候尤其如此。
我fork过来的修改版在这里,代码改得比较多,这份实现逻辑上更加接近于lua的协程库:首先是支持协程里启动协程,比如A resume B => B resume C => C yield 返回 B => B yeild 返回 A。
对于IO 同步操作来说,handle 函数内部实现如下,我们发现IO操作与 epoll_wait 是在同一个处理流程里面的。1 台服务器 14G 内存,1 核 CPU 3 台客户端 4G 内存,1 核 CPU。
在介绍项目之前先来看一张图,性能绝对第一,吊打java、go、php、c#等一众语言框架。Drogon是一个跨平台框架,它支持Linux,也支持macOS、FreeBSD,OpenBSD,HaikuOS,和Windows。
事情到这个点就有点尴尬了, 原有的asio, 架构层面来说, 跟新的execution是存在落差的. 而项目实践上来说, asio相当稳扎稳打, 而以libunifex当前的状态来说, 离工业化使用其实是有一定距离的. 但asio作者在21年时候的两篇演讲:Talking Async Ep1: Why C++20 is the Awesomest Language for Network Programming。
lib_protocol:实现了 HTPP 协议及 ICMP/PING 协议。lib_fiber:该库为支持协程库,直接 hook 系统 read/write 等 API,与 epoll 配合支持高并发网络编程。