网络层是大多数基础服务都需要的一个东西,libevent是个单线程模型(reactor模式)的网络库。
而单线程模式,就必须保证事件的回调处理是非阻塞的。
但在某些场景下,必须阻塞某种事件,如网络限速/磁盘限速等限速场景。
这两个就坑了,如果事件都由同一个线程处理,必然引起不该阻塞的事件被阻塞住。
目前想到的解决方案是增加1个(组)线程,由该线程处理紧急,非阻塞的事件。这也是较为流行的做法,1组线程处理普通/可阻塞事件,1组线程处理高优/非阻塞事件。
记一个libevent遇到的坑
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 何为Reactor线程模型? Reactor模式是事件驱动的,有一个或多个并发输入源,有一个Service Han...
- PPC 和 TPC 模式,它们的优点是实现简单,缺点是都无法支撑高并发的场景。 Reactor PPC 模式最主要...