2011-03-18 7 views
0

흥미롭게도 여러 이해 관계를 설정, 나는 2004 년epoll에 한 번

이럴에서이 아닌 일부 된 슬라이드에 어떤 토론을 찾을 수 없습니다, epoll() 사용의 현재 방식은 epoll_ctlv() 전화 같은 을 구걸한다. 이 호출은 일반적인 HTTP 웹 서버 인 에 대해서는 적합하지 않지만 같은 데이터를 여러 클라이언트에 동시에 보내고있는 게임 서버에서는 이됩니다. 이것은 epoll_ctl()이 이미 존재한다는 사실을 감안할 때 은 구현이 어려워 보입니다. 이 기능을 사용하지 않는 이유가 무엇입니까? 어쩌면 아니 최적화 창, 거기?

답변

0

클라이언트가 연결하거나 연결을 끊을 때 epoll 세트에서 소켓을 추가하거나 제거하는 데는 일반적으로 epoll_ctl() 만 사용합니다. 이는 자주 발생하지는 않습니다.

동일한 데이터를 여러 소켓으로 보내려면 파일 디스크립터 벡터를 사용하는 send() (또는 write()) 버전이 필요합니다. 이 이 구현되지 않은 이유는 아마도 충분한 관심을 가진 사람이 아직 그렇게하지 않았기 때문일 것입니다 (물론, 미묘한 문제가 많습니다. 각 대상 파일 설명자가 성공적으로 다른 숫자 만 쓸 수 있다면 어떨까요? 바이트 수).

관련 문제