block & non-block
Network/Network 2011. 12. 22. 10:22blocking 모드
- 어떤 시스템 콜을 호출하였을 때 네트워크 시스템이 동작을 완료할 때까지 그 시스템 콜에서 프로세스가 멈춤
- 소켓 생성시 디폴트 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 |