多进程epoll调度问题

lvshuang
  • 4
新手上路,请多包涵

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

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

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

回复
阅读 2.8k
2 个回答
✓ 已被采纳

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

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

你知道吗?

宣传栏