多进程epoll调度问题

新手上路,请多包涵

在linux内核大于 3.9 的网络编程中,为了避免惊群,可以使用 OS_REUSEPORT。
这样使得多个进程可以监听同一个端口(参见nginx 1.9.1)

在多个子进程使用epoll创建对socket监听后,当有事件产生,操作系统会选择一个进程响应。假如只有一个进程,且进程正在进行处理,这个时候若有事件发生,这个进程会不会被打断?假如所有进程都在运行,新的事件是等待某个进程执行完以后,分配给它,还是直接先绑定到某个进程上?

对操作系统了解很少,希望得到一些帮助,谢谢大家。

阅读 4.7k
2 个回答

假如只有一个进程,且进程正在进行处理,这个时候若有事件发生,这个进程会不会被打断

不会。epoll是需要进程自己调用epoll_wait去阻塞等待事件发生的,如果进程在进行处理时有新事件发生了,要等下一次调用epoll_wait时进程才能知道。

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