block & non-block

Network/Network 2011. 12. 22. 10:22
blocking 모드 
  • 어떤 시스템 콜을 호출하였을 때 네트워크 시스템이 동작을 완료할 때까지 그 시스템 콜에서 프로세스가 멈춤
  • 소켓 생성시 디폴트 blocking 모드
  • listen(),connect(), accept(), recv(), send(), read(), write(), recvfrom(), sendto(), close()
  • block 될 수 있는 소켓 시스템 콜
  • I/O시 처리가 될 때까지 기다려야 함. 비 동기적인 작업 수행 불가능
  • 일 대 일 통신을 하거나 프로그램이 한가지 작업만 하면 되는 경우는 blocking 모드로 프로그램을 작성할 수 가능


Non-blocking 모드

  • 소켓 관련 시스템 콜에 대하여 네트워크 시스템이 즉시 처리할 수 없는 경우라도 시스템 콜이 바로 리턴되어 응용 프로그램이 block되지 않게 하는 소켓 모드
  • 통신 상대가 여럿이거나 여러 가지 작업을 병행하려면 nonblocking 또는 비동기 모드를 사용하여야 한다.
  • non-blocking 모드를 사용하는 경우에는 일반적으로 어떤 시스템 콜이 성공적으로 실행될 때까지 계속 루프를 돌면서 확인하는 방법(폴링)을 사용한다. 

'Network > Network' 카테고리의 다른 글

소켓 옵션  (0) 2011.12.26
Socket 함수 정리  (0) 2011.12.22
socket select/poll  (0) 2011.12.22
IP Subnet  (0) 2011.12.02
멀티캐스트 원리  (0) 2011.12.02
: