더북(TheBook)

앞서 일단 미루었던 에서 CPU 사용량 폭주 문제를 해결해 봅시다. 이 문제를 해결하려면 우리는 이러한 일을 해 주는 함수가 필요하겠죠.

• 여러 소켓 중 하나라도 would block이었던 상태에 변화가 일어나면, 즉 송신 버퍼에 빈 공간이 생기거나 수신 버퍼에 뭔가가 들어온다면 그 상황을 알려 주는 함수

• 혹은 그것을 알려 주기 전까지는 블로킹 중이어서 CPU 사용량 폭주를 해결하는 함수

다행히 있습니다! 이러한 기능을 제공하는 함수를 알아봅시다.

1. 소켓 리스트 A를 입력합니다.

2. A에 있는 소켓 중 하나라도 I/O 처리를 할 수 있는 것이 생기는 순간까지 블로킹합니다.

3. 블로킹이 끝나면 어떤 소켓이 I/O 처리를 할 수 있는지 알려 줍니다.

4. 블로킹은 타임아웃을 지정할 수 있습니다. ‘무한대’를 입력하면 I/O 처리를 할 수 있는 소켓이 생길 때까지 영원히 기다립니다. 지정한 시간(밀리초 단위)을 입력하면 해당 시간이 될 때까지 기다립니다. 0초를 입력하면 블로킹 없이 결과를 리턴합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.