multithreading - epoll_wait 在几个线程上更快?

标签 multithreading epoll

我正在考虑基于 epoll 编写一个 tcp 服务器.
为了获得最佳性能,我也想实现多核支持。但在我的研究过程中,出现了以下问题:
叫两个更快吗epoll_wait() - 来自两个不同线程的调用,每个线程在双核上观察自己的文件描述符?或者这是否与只调用一个 epoll_wait() 一样快哪个观察所有文件描述符?

由于内核观察文件描述符,我认为在用户空间调用 epoll_wait() 时使用多少线程并不重要。 ?

最佳答案

只要您使用边缘触发(EPOLLET)模式(并注意同步),您甚至可以在多个线程上为同一个 epoll_fd 同时调用 epoll_wait。与单线程 epoll 事件循环相比,使用这种方法可以在多核机器上获得真正的性能优势。

前段时间我确实做过性能测量,结果见我的博客文章:

  • http://cmeerw.org/blog/748.html#748
  • http://cmeerw.org/blog/746.html#746
  • 关于multithreading - epoll_wait 在几个线程上更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481245/

    相关文章:

    c - 一个 nginx worker 进程是同时处理两个请求还是一个一个处理?

    C套接字原子非阻塞读取

    android - 使 onSensorChanged 不会减慢 UI

    multithreading - 多线程进程对多核还是单核速度提高一倍?

    java - ScheduledExecutorService 与使用 Thread.sleep() 滚动您自己的 Runnable 之间的区别

    java - 关于创建同步机制

    java - 与 volatile 'status flag' boolean 值同步?

    linux - epoll 可以在可用时完全取代 select/poll 吗?

    linux - epoll_wait 和更改系统时间

    c - epoll_wait 的替代方案,它不等待文件描述符?