记一个libevent遇到的坑

网络层是大多数基础服务都需要的一个东西,libevent是个单线程模型(reactor模式)的网络库。
而单线程模式,就必须保证事件的回调处理是非阻塞的。
但在某些场景下,必须阻塞某种事件,如网络限速/磁盘限速等限速场景。
这两个就坑了,如果事件都由同一个线程处理,必然引起不该阻塞的事件被阻塞住。
目前想到的解决方案是增加1个(组)线程,由该线程处理紧急,非阻塞的事件。这也是较为流行的做法,1组线程处理普通/可阻塞事件,1组线程处理高优/非阻塞事件。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 何为Reactor线程模型? Reactor模式是事件驱动的,有一个或多个并发输入源,有一个Service Han...
    未名枯草阅读 3,554评论 2 11
  • 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力,由此,本文旨在为大家提供有用的...
    caison阅读 10,725评论 3 43
  • PPC 和 TPC 模式,它们的优点是实现简单,缺点是都无法支撑高并发的场景。 Reactor PPC 模式最主要...
    hedgehog1112阅读 1,999评论 1 11
  • 2017年3月28日星期二 18点33分 夜又来了,毫无声息地舒展而去,一如走过的所有的日子,宁静祥和。 放下了日...
    悦者阅读 290评论 0 8
  • 此女 不是 世俗所认美人 而我 评之为美女 那美 不起眼 不招摇 甚是遗落角边 但却是一颗珍珠 需要经过时间的打磨...
    现有游女阅读 188评论 0 0