Воскресенье, 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»