2015-01-21 5 views
-1

Я сделал сокет сервера TCP/UDP epoll и каждый сокет, прослушивающий друг друга. Но, epoll_ctl_return есть.множественное управление epoll с потоком избегает EEXIST

Я использую разные порты, поэтому эту проблему можно решить, используя fork, но Я хочу обрабатывать несколько серверов в одном процессе и несколько потоков.

Я прочитал статью в сотовом сервере с несколькими серверами. невозможно использовать 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}; 

ответ

0

Я не уверен, где Epoll вписывается в описании. Если каждый сокет принадлежит отдельному потоку, нет смысла использовать epoll. epoll() используется для асинхронного программирования, когда несколько сокетов могут управляться одним потоком выполнения.

+0

Я прочитал ваше мнение. я пересматриваю свои коды. Благодарю. – BlueIsland