в Unix Network Programming by Stevens и другие неблокирующие сокеты проиллюстрированы кодом, использующим select call. Тот самый вызов, который обычно выбирается между блокировкой дескрипторов файлов.выберите в неблокирующей конструкции код c
Мое понимание заключалось в том, что неблокирующий дизайн был в точности альтернативой выбору: вместо блокировки в выборе вызова мой код мог бы проверять неблокирующие дескрипторы и выполнять что-то еще поверх этого. Было ли мое понимание неправильным или есть что-то загадочное в выборе звонка, что делает его неизбежным в неблокирующем дизайне?
По практическим соображениям мне нужно работать с большим количеством гнезд tcp, накладывая «индивидуальный» тайм-аут на каждый из них. Я думал о том, чтобы использовать неблокирующий дизайн и цикл через соответствующие массивы. Было бы уместно без выбора?
спасибо.
Не правильное понимание. Неблокирующие сокеты не предназначены для устранения блокировки на 'select'. Они предназначены для устранения блокировки на 'send',' recv', 'connect' и других операциях. Из тех 'connect' особенно сложно, как и для блокирующих сокетов, он не может быть мультиплексирован с помощью' select'. С неблокирующими сокетами вы можете полностью исключить 'select' или использовать его всякий раз, когда это имеет смысл, и использовать периодические проверки в других случаях. –
Что вы имеете в виду, «личный тайм-аут для каждого из них»? Вы имеете в виду, что каждый сокет имеет настраиваемый таймер бездействия, после которого соединение отбрасывается? –
@ н.м. Спасибо, это на самом деле именно то, что я хотел бы убедиться: возможность отмены выбора вызова с неблокирующими сокетами. – wick