网络层是大多数基础服务都需要的一个东西,libevent是个单线程模型(reactor模式)的网络库。
而单线程模式,就必须保证事件的回调处理是非阻塞的。
但在某些场景下,必须阻塞某种事件,如网络限速/磁盘限速等限速场景。
这两个就坑了,如果事件都由同一个线程处理,必然引起不该阻塞的事件被阻塞住。
目前想到的解决方案是增加1个(组)线程,由该线程处理紧急,非阻塞的事件。这也是较为流行的做法,1组线程处理普通/可阻塞事件,1组线程处理高优/非阻塞事件。
记一个libevent遇到的坑
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 何为Reactor线程模型? Reactor模式是事件驱动的,有一个或多个并发输入源,有一个Service Han...
- PPC 和 TPC 模式,它们的优点是实现简单,缺点是都无法支撑高并发的场景。 Reactor PPC 模式最主要...