Не мога да намеря много документация, за да кажа дали това трябва да се случи или не:
- Някои нишки отварят TCP (или друг поток) сокет
- Нишка 1 стартира блокиращ recv()
- Нишка 2 извиква shutdown() на сокета с SHUT_RDWR (или SHUT_RD мисля)
- Нишка 1 вече е "събудена" от блокиращото си повикване и връща нула, както би направила, ако другата страна затвори своя сокет.
Това поведение се появява на съвременни Linux и FreeBSD системи. Не съм го тествал с други.
Коментар за помощна страница на Microsoft MSDN тук: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740481%28v=vs.85%29.aspx предполага, че това поведение е "отговорно" в Windows; също така се посочва, че това „в момента не е така“, но това може да е остаряло.
Посочено ли е някъде това поведение? Мога ли да разчитам на него?