epoll的ET模式与LT模式在多线程下是否没区别了?

epoll在多线程并发下需要用到EPOLLONESHOT防止多个线程处理同一个事件,但是这样就变成无论ET还是LT都需要循环读写确保这个线程单独处理完这个事件,而且每次处理完事件都需要重置events,这样ET和LT的优势好像都没了,是不是基本没什么不同了?或者说还有其他更好的多线程处理事件的方法?

阅读 2.8k
1 个回答

第一个问题目前我也不清楚。
第二个问题你可以看下muduo网络库,采用每个线程开一个io loop,同一个fd上的事件保证只由一个线程处理。专门用一个线程accept连接,然后分发给这些io loop线程。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题