使用线程避免 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() 用于异步编程,其中多个套接字可以由单个执行线程管理。
我制作了 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() 用于异步编程,其中多个套接字可以由单个执行线程管理。