더북(TheBook)

하지만 IOCP에서는 이러한 문제가 해결됩니다.

p182_2

▲ 그림 3-22 Overlapped I/O를 걸어야만() 완료 신호()가 어느 스레드에서든지 발생하게 됨

 

그림 3-22와 같이 어떤 소켓에 대해 Overlapped I/O를 하지 않는 이상 그 소켓에 대한 완료 신호는 전혀 발생하지 않습니다. 즉, 소켓 하나에 대한 완료 신호를 스레드 하나만 처리할 수 있게 보장됩니다. 이러한 특징 덕분에 IOCP 하나를 여러 스레드가 기다리도록 구현하기가 쉽습니다. 또 이러한 성질 덕택에 많은 소켓에 대한 I/O 처리를 동시다발적으로 수행할 때, 여러 스레드가 완료 신호 처리를 골고루 나누어서 처리할 수 있습니다. 이는 대규모 동시접속자 게임 서버를 만들고자 멀티코어를 모두 활용해야 할 때 유리합니다.

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