V
主页
【异步C++】基于红黑树实现定时中断,超时自动终止任务
发布人
C++中如何安全打断程序的执行?小彭老师指出,中断处理分为三种策略: 1.随时随地都可以打断,C语言的信号就属于此类,缺点是打断位置不可控,容易出现数据竞争。 2.在阻塞的系统调用中(wait,sleep)被打断,会抛出异常,Java的InterruptException就属于此类,缺点是需要系统调用,不适合纯计算的线程,好处是打断的位置高度可控,系统调用之外不用担心被中断。 3.在用户自定义的位置手动判断,并return,C++的stop_token就属于此类,缺点是需要手动判断,而且系统调用无法打断,好处是纯计算的程序也能手动打断,且打断位置完全可控,不容易出现内存泄漏。 为此,小彭老师带你一起动手实现stop_token!在请求超时控制中,由于需要让定时器打断recv系统调用的执行,小彭老师采用了2和3的结合,利用epoll_ctl删除现有回调,让stop_token打断系统调用,返回ECANCELED。还介绍了红黑树容器的妙用,与小顶堆的异同,Linux内核的“完全公平调度”也是基于此。最终,我们实现了可随时取消的定时器回调,从而将长时间不用的连接自动关闭节约系统资源。最后,我们实现了简单的HTTP路由,对不同的路径用一个map注册不同的回调函数。还顺手实现了HTTP客户端,异步建立连接,发出请求,且支持复用已有连接。总之,这是一款从零写起的教学用,基于C++17回调函数的高性能异步HTTP服务器,每行代码都精心注释,敢承诺:土木老哥都看得懂。点赞过200立即更新下集,继续带您了解SSL与TLS的前世今生,集成BearSSL,支持HTTPS协议。
打开封面
下载高清视频
观看高清视频
视频下载器
被双笙子佯谬拉黑了。4寸屏幕扣了好久的字
还在用rand生成随机数?来学学【现代C++】的正确用法吧!
【C++17】小彭老师陪你从零手搓HTTP服务器
异步rust的时代已经来临......所有人都必须向蟹神祈祷
【C++ STL】全网最完整的map教程
【C++11】多线程安全如此简单
【现代C++】静态反射实现自动JSON序列化
【C++20】基于协程实现的WebSocket聊天服务器
红黑树 - 删除
【C/C++进阶】宏函数实用指南
【C++20工程实战】自己动手实现纯头文件日志库
【C++】从零搭建聊天服务器(面试加分必备实战项目)
【公开课】C++11开始的多线程编程(#5)
【C++/OpenGL】三体运动物理仿真
我红黑树那么牛,你们凭什么不用我?
【RAII+异常】小彭老师解题+思路详解!mq白的现代C++习题集(第二期)
【C++源码分析】微信二维码闪退,深扒源码后,竟发现远不止这一处bug!
【C++ STL】手搓红黑树有多困难?自制标准库系列之map与set(最难的一集)
【C++项目实战】实现一个JSON解析器
【CUDA Mode 2024】中英字幕
【Vim插件整合包】C++/Python自动补全,模糊查找文件,编译CMake工程等
【公开课】现代C++进阶:模板元编程与函数式
C++ 实现分布式网络通信框架-rpc通信原理
【现代C++】函数式编程优雅实现信号槽
【C++辟谣】inline关键字的作用是“内联优化”?你可能是谭浩强的受害者!inline真正的用途是...
【C++】类型擦除 + 工厂模式,告别 if-else
【C++20】基于协程的简易HTTP服务器(下)
自下而上-分布式存储全栈开发(TiDB/RockDB/SPDK/fuse/ceph/NVMe/ext4)
【C++】局部变量初始化,推荐用哪种写法?最不容易错?
有了modules的C++, 是真正modern的C++, 曾经诟病的已经追赶上来, 曾经遥遥领先的, 依旧遥遥领先_代码知识
【C++20】把epoll封装成协程库,支持异步读写TCP套接字,有手就行(中)
游戏服务器开发 第一讲
鲜为人知的C++黑科技【__PRETTY_FUNCTION__】非侵入式的编译期反射
【C++标准库】自己动手实现std::optional容器
【设计模式讲座】Zeno中的现代C++最佳实践
【C++】游戏开发常用的设计模式,高手都这样写?单例模式、组件模式、原型模式、访问者模式等
【C++面试题】面试官:如何使用 gdb 调试不带调试信息的可执行程序?
【C++11】深入剖析lambda仿函数的原理,自己动手实现std::function容器
什么是红黑树,据说红黑树很难理解,看动画5分钟就弄明白原理
【C++17新特性】内存池与多态分配器(std::pmr::memory_resource)