使用线程避免 EEXIST 的多个 epoll 控制

multiple epoll control with thread avoid EEXIST

我制作了 TCP/UDP epoll 服务器套接字,并且每个套接字都在彼此的线程中侦听。但是,epoll_ctl_return存在。

我使用了不同的端口,所以这个问题可以使用 fork 解决,但是 我想在一个进程和多个线程中处理多个服务器套接字。

我读了一篇有关 c# 多服务器套接字的文章。 不能用epoll吗?

或者多个服务器套接字添加epoll?

这是我的伪代码

listener* tcpListener = new listener(ip,port, protocolType.tcp);

tcpListener.bind();

std::thread t{listener::listen, tcpListener};

listener* udpListener = new listener(ip,port,protocolType.udp);

udpListener.bind();

std::thread u{listener::listen, udpListener};

我不确定 epoll 是否符合您的描述。如果每个套接字都由一个单独的线程拥有,那么就没有必要使用 epoll。 epoll() 用于异步编程,其中多个套接字可以由单个执行线程管理。