потоки (блокируются при чтении в режиме блокировки) перед переходом на неблокирующую. Как указал @Maxim, разделяющий код функции, которая не пробуждает потоки, заблокированные потоки будут пробуждены только после завершения записи (данные доступны).
есно о поведении сокета при блокирующих и неблокирующих действиях. Что происходит с блокировкой потоков в сокете при изменении режима блокировки сокета? Вот сценарий; thread1 (T1) создает сокет UDP и
fd = socket(AF_INET , SOCK_DGRAM, 0);
T1 ждет (спит) для получения
recv(fd, buf , sizeof(buf) , 0);
и thread2 (T2) меняет режим сокета на неблокирующий, прежде чем сокет получит какие-либо данные
fcntl(fd, F_SETFL, O_NONBLOCK);
что происходит с T1? Это сигнализируется / пробуждается, потому что сокет больше не блокирует?