아래 code는 20ms timeout을 갖는 select함수를 1000번 수행하고 걸린 시간을 1000으로 나누어 평균적인 시간을 계산한 code입니다.
모니터 해야하는 fd를 STDIN_FILENO으로하여 항상 select가 항상 timeout으로 리턴하도록 하였습니다.
처음 생각에는 제가 설정한 20ms보다 더 길게 나올것으로 예상하고 얼마나 더 많이 나올까 하고 코딩을 하였는데 실제 값은
((CPU가 select를 하는 프로세스만 잡고 있는 것이 아니라 다른 일도 해야 하기때문에 select에서 블록되어있을때 다른일을 시작
하였다면 timeout이 되어도 하던일을 다 끝내고 select를 리턴하지 않을까 하는 생각에 그렇게 생각함))
timeout으로 설정한 값보다 더 작은 값이 나오더군요 (12~17, 18 ms 정도)
왜 그럴까요?
loop를 없애고 timeout을 3초정도로 설정하였도 역시 3보다 적은 2.xxxx초가 나오는더군요