я не могу найти много документации, чтобы сказать, что это, должно ли произойти или нет:Вызывает ли вызов выключения сокета из другого потока блокировки recv() потоков?
- Некоторых нитей открывает TCP (или другой поток) сокеты
- Thread 1 начинает блокирующий ПРИЕМ()
- Thread 2 вызывает shutdown() в сокете с SHUT_RDWR (или SHUT_RD, я думаю)
- Thread 1 теперь «проснулся» от его блокирующего вызова и возвращает ноль, как если бы другая сторона закрыла свой сокет.
Такое поведение наблюдается в современных системах Linux и FreeBSD. Я не тестировал его ни с кем другим.
Комментарий к странице справки Microsoft MSDN здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740481%28v=vs.85%29.aspx предполагает, что это поведение является «ответственным» в Windows; он также утверждает, что это «в настоящее время не так», но это может быть устаревшим.
Это поведение указано в любом месте? Могу ли я на это положиться?