난 Redis가 Ruby로 짰는 줄 알았는데...
코드를 받아보니 C로 짜여져 있다.
server.h를 보면 ae.h를 포함하고 있다.
Jim's event-loop 를 위해 만든 event-driven 프로그래밍 라이브러리를 재사용하기 편하게 라이브러리화 한 것이다.
ae.c에 보면 시스템에서 지원하는 최적(최고)의 멀티플렉싱 레이어를 포함하는 코드가 있는데,
evport -> epoll -> kqueue -> select 순으로 되어 있다.
#ifdef HAVE_EVPORT
#include "ae_evport.c"
#else
#ifdef HAVE_EPOLL
#include "ae_epoll.c"
#else
#ifdef HAVE_KQUEUE
#include "ae_kqueue.c"
#else
#include "ae_select.c"
#endif
#endif
#endif
evport는 일루모스(illumos) 이벤트 포트를 위한 모듈이고 copyright는 Joyent로 되어있다.
예전에 썼던 node.js의 윈도우 지원의 역사에 예전의 그림이 있는데 최근의 그림은 아래와 같을 것이다.(추측)
libev가 epoll이나 kqueue를 선택하도록 추상화하는 레이어라 할 수 있다.
'Programing > OpenSource' 카테고리의 다른 글
[Apache Lucene] Lucene의 의미는? (0) | 2020.02.18 |
---|---|
[tomcat] HttpServletRequest.getHeader (0) | 2020.02.11 |
[Docker] Unable to find image 해결책 (0) | 2019.08.08 |
[SonarQube] 메이븐(Maven) 프로젝트에서 커버리지 표시하기 (0) | 2019.08.08 |
[electon] keytar (0) | 2019.07.15 |