假设我有一个绑定到套接字的进程,而不是自己创建当前进程的4个实例。
新进程继承父套接字的文件描述符,并且能够执行"接受"在上面。如果我将套接字描述符放入epoll并尝试连接到套接字,则通知所有4个工作程序(EPOLLIN),有一些数据需要读取/接受。所有工人都试图接受他们中的3人失败,只有一人可以接受。
如何绕过这种行为? 这是一个太大的性能损失,让大多数工人每次都失败了。
如何避免这种情况?
答案 0 :(得分:0)
如果accept()
返回-1 / EWOULDBLOCK / EAGAIN,则返回轮询循环。
答案 1 :(得分:0)
在epoll fd中添加套接字时使用EPOLLONESHOT,该套接字应该只为一个事件通知一个进程。
或者您可以保护epoll fd,以便只有一名工作人员等待epoll fd。