Воскресенье, 12 Июль 2009
получение состояния сокетов в unix
Продолжаем тему работы с сетью. Тут рассмотрим разные poll’ы.
select()
. Есть везде. Хороший, когда соединений мало. В некоторых системах есть максимальный лимит на количество обрабатываемых сокетов.poll()
. Менее переносимый, чемselect()
. Зато нет ограничений на максимум обрабатываемых сокетов. Требуется больше ресурсов, чем дляselect()
./dev/poll
. В Solaris очень хороший (лучший?) способ обработать кучу соединений. Гоняются только события, а не состояния. На другие системах я его не видел :) Вроде были патчи для Linux, но не прижились.epoll()
. Обычныйpoll()
который передает события, а не состояния. Существует только в Linux.kqueue()
/kevent()
. Очень похож наepoll()
из Linux но для FreeBSD/OpenBSD. Но гораздо фичастее. Умеет, в том числе, и AIO.realtime signals
. Мало где есть. За раз обрабатывается только один сигнал, а не несколько. Очередь сигналов может переполняться.
Что я забыл?
Да, в мире нет счастья.
Комментарии
Спасибо, интересно.
Форма комментирования для «получение состояния сокетов в unix»