Demystifying C++20 Coroutines
Introduction 自 C++11 开始,很多更新都集中在并发支持上,从最初的线程基础支持,到如今的协程,C++ 已经日趋完善。 协程是继线程之后的又一利器,若论年龄,协程倒比线程要大。由于早期… Continue Reading Demystifying C++20 Coroutines
Dive deep into the C++ core, and discover more!
Introduction 自 C++11 开始,很多更新都集中在并发支持上,从最初的线程基础支持,到如今的协程,C++ 已经日趋完善。 协程是继线程之后的又一利器,若论年龄,协程倒比线程要大。由于早期… Continue Reading Demystifying C++20 Coroutines
新年第一篇,好久没写Modern C++主题了,这次来说说C++20的格式化库。 该标准库来自开源库fmtlib,作者为Victor Zverovich,提案为P0645R10。 目前为止,仍旧只有M… Continue Reading Using C++20 Formatting Library
问题 本篇将梳理前面讲过的所有网络模型,并在此基础上探究这些模型所涉及的设计思路。相当于前面只讲了What和How部分,这里专门来补充Why部分。因为若是一开始就从原理讲起难免枯燥乏味且晦涩难通,而有… Continue Reading 各种网络模型背后的设计思路
Introduction 若要判断一个输入的 QQ 号是否有效,你会如何处理呢? 首先你得分析一下其对应规则,依次列出: 长度大于5,小于等于11; 首位不能为0; 是否为纯数字? 规则既列,接着就该… Continue Reading C++ 正则表达式
前言 这是IOCP的末篇了,本次的实例使用IOCP配合扩展函数来实现服务器,并对之前的版本做一些优化,比如这里使用了内存池,日志记录,所以这也是效率最好的一个版本,作为一个例子来说已经很完整了。 因为… Continue Reading 网络模型之IOCP服务器实例二(四)
上篇用IOCP实现了一个简单的服务器,在处理消息方面性能已经不错了,但是接爱请求函数却依旧使用的是 accept 函数,所以这部分性能并不够,而Windows在扩展函数中为我们提供了一些选择,本篇就来… Continue Reading 网络模型之IOCP与扩展函数(三)
上篇简单地介绍了IOCP模型所需的基础内容,并给出了服务器版本一的声明,更多的内容会在本篇的实现中来展开说明,学完这篇就基本会明白怎样用IOCP来实现一个还不错的上万级别的服务器了。 开始之前得对上篇… Continue Reading 网络模型之IOCP实现版本一(二)
前言 前面介绍了重叠IO模型,该模型的缺点是发出IO请求的线程必须同时对完成通知进行处理,若一个线程发出多个请求,那么即使其它线程完全处于空闲状态,该线程也必须对每个请求的完成通知做出响应,从而影响了… Continue Reading 网络模型之IOCP基础(一)
在上篇介绍了重叠 IO 的基本知识并使用事件的方式实现了第一个版本,但大家知道使用事件的缺点,因为 WaitForSingleObject 函数最多只能等待 64 个事件,所以要想处理更多的客户端得通… Continue Reading 网络模型之重叠IO(二)
前面已经说过 select 和 Event selct 模型,这两个还是比较小型的,今天来说重叠 IO,这个可以支持上千个用户,当然理解起来也越来越难了点。 重叠 IO 模型是典型的非阻塞模型,接收数… Continue Reading 网络模型之重叠IO(一)