humonnom / 42-webserv-ref

📖 CPP Code Examples for 42-WEBSERV Subject
0 stars 0 forks source link

select, poll, epoll, kqueue #3

Open humonnom opened 2 years ago

humonnom commented 2 years ago

I/O Multiplexing

humonnom commented 2 years ago

select <sys/select.h>

  * single thread
  * fd_set을 사용 
  * fd를 하나하나 체크해야함 -> O(n)의 계산량
  * 성능이 접속수에 비례함
  * 커널과 유저 사이에 여러번의 데이터 복사가 일어남
  * 관리 fd 수에 제한이 있음
  * 타임아웃값의 세팅: timeval 구조체 사용
humonnom commented 2 years ago

poll <sys/poll.h>

  * select의 단점을 개선함
  * 관심있는 fd만 넘길 수 있고, 이벤트도 보전됨
  * 접속수가 많으면 select에 비해 성능이 떨어짐
  * system call의 호출이 select보다 적음
  * low level 처리
  * 관리할 수 있는 fd의 개수가 무제한
  * 타임아웃값의 세팅: 구조체 없이 사용함(int)
humonnom commented 2 years ago

epoll

함수이름 내용
epoll_create 구조체 생성
epoll_ctl fd를 등록, 수정, 삭제
epoll_wait fd의 변화 탐지
humonnom commented 2 years ago

kqueue