나는이는 일이되어 여부 말 많은 문서를 찾을 수 없습니다다른 스레드의 소켓 종료 호출은 항상 blocking recv() 스레드가 깨어나게합니까?
- 일부 스레드가 TCP (또는 다른 스트림) 스레드 1이 차단 recv를 시작
- 소켓을 엽니 다()
- 스레드 2는 SHUT_RDWR (또는 생각해 보면 SHUT_RD)을 사용하여 소켓에서 shutdown()을 호출합니다.
- 스레드 1은 현재 블로킹 호출에서 "깨어났다"고하고 상대방이 소켓을 닫으면 0을 반환합니다.
이 동작은 최신 Linux 및 FreeBSD 시스템에 나타납니다. 나는 다른 사람들과 그것을 테스트하지 않았다.
여기에 Microsoft MSDN 도움말 페이지에 대한 의견 : http://msdn.microsoft.com/en-us/library/windows/desktop/ms740481%28v=vs.85%29.aspx은 Windows에서이 동작이 "책임"이라고 제안합니다. 그것은 또한 이것이 현재의 경우는 아니지만 이것은 시대에 뒤 떨어진 것일 수 있다고 말합니다.
어디서나이 동작이 지정됩니까? 나는 그것에 의지 할 수 있습니까?