![epoll이 해시 테이블 대신 파일 설명자를 관리하기 위해 레드-블랙 트리를 사용하는 이유는 무엇입니까?](https://linux55.com/image/12663/epoll%EC%9D%B4%20%ED%95%B4%EC%8B%9C%20%ED%85%8C%EC%9D%B4%EB%B8%94%20%EB%8C%80%EC%8B%A0%20%ED%8C%8C%EC%9D%BC%20%EC%84%A4%EB%AA%85%EC%9E%90%EB%A5%BC%20%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20%EB%A0%88%EB%93%9C-%EB%B8%94%EB%9E%99%20%ED%8A%B8%EB%A6%AC%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
리눅스 시스템 호출epoll_ctl
(at fs/eventpoll.c
) 관심 목록이라는 레드-블랙 트리를 사용하여 파일 설명자 이벤트에 대한 관심을 생성, 삭제 또는 수정합니다. 관심 목록찾을 수 없음epoll_wait
, 보다 정확하게는의 콜백을 기다립니다.poll
(존재하다 include/linux/poll.h
). 따라서 epoll
관심 있는 파일 설명자 이벤트를 수신하는 실행 시간은 연결 수 기준으로 O(1)입니다.N. 그러나 레드-블랙 트리를 사용하기 때문에 관심 목록에 파일 설명자를 추가, 수정 또는 삭제하는 데 드는 시간 복잡도는 O(log(n))입니다.
해시 테이블이 조인 추가 및 제거와 조인 사용에 대해 O(1) 성능을 제공할 수 있는데 왜 레드-블랙 트리를 사용하여 관심 목록을 구현합니까? 절충안은 무엇입니까?