乐趣区

关于c++:Folly库代码赏析8IO

IOBuf

IOBuf相似于 linux 中的sk_buf,是一个网络编程中的常见概念,用一个物理上的非间断空间虚构出逻辑上的间断空间,同时利用援用计数防止拷贝复制。

空间布局如右所示:headRoom + data + tailRoom,因而能够prepend() && append()

同时通过多个 IOBuf chain 连接成逻辑上的间断空间,通过 unlink 开释。

同时兼容了 iovec 调用,充分利用多个小块读写。

EventBase

基于 IOBufRequestCtx,引入了和 libevent 相似的事件循环模型。

教训

为了 P99,肯定要把 CPU 密集事件挪动到专门的 CPU 密集操作池中,避免拖慢 IO 事件。

退出移动版