我正在考虑基于 epoll
编写一个 tcp 服务器.
为了获得最佳性能,我也想实现多核支持。但在我的研究过程中,出现了以下问题:
叫两个更快吗epoll_wait()
- 来自两个不同线程的调用,每个线程在双核上观察自己的文件描述符?或者这是否与只调用一个 epoll_wait()
一样快哪个观察所有文件描述符?
由于内核观察文件描述符,我认为在用户空间调用 epoll_wait()
时使用多少线程并不重要。 ?
最佳答案
只要您使用边缘触发(EPOLLET)模式(并注意同步),您甚至可以在多个线程上为同一个 epoll_fd 同时调用 epoll_wait。与单线程 epoll 事件循环相比,使用这种方法可以在多核机器上获得真正的性能优势。
前段时间我确实做过性能测量,结果见我的博客文章:
关于multithreading - epoll_wait 在几个线程上更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481245/