non-blocking 소켓은 언제 사용하나요?

dalili의 이미지

저는 항상 blocking 소켓으로만 구현을 하다 보니...

왜 코드도 어려운... non-blocking 소켓을 사용하는지 잘 모르겠습니다.

개념은 알고.. 샘플 코드 보면 이해는 됩니다.

그런데 실전에서 사용해본적은 없어서...

주로 어떤 경우에 사용하나요?

gilgil의 이미지

blocking socket은 send나 recv과정에서 현재의 thread가 block될 수 있습니다.
즉 하나의 thread에서 여러개의 connection을 처리할 수가 없죠.
결국 one thread - one connection정도로 프로그래밍하게 되는데,
이렇게 되면 connection에 비례하여 thread의 수가 생겨날 수 밖에 없습니다.

적은 thread수로 많은 connection을 처리하기 위해서(성능 항샹을 위해서) non-blocking을 사용하게 됩니다.