Воскресенье, 12 Июль 2009

получение состояния сокетов в unix

Продолжаем тему работы с сетью. Тут рассмотрим разные poll’ы.

  1. select(). Есть везде. Хороший, когда соединений мало. В некоторых системах есть максимальный лимит на количество обрабатываемых сокетов.
  2. poll(). Менее переносимый, чем select(). Зато нет ограничений на максимум обрабатываемых сокетов. Требуется больше ресурсов, чем для select().
  3. /dev/poll. В Solaris очень хороший (лучший?) способ обработать кучу соединений. Гоняются только события, а не состояния. На другие системах я его не видел :) Вроде были патчи для Linux, но не прижились.
  4. epoll(). Обычный poll() который передает события, а не состояния. Существует только в Linux.
  5. kqueue()/kevent(). Очень похож на epoll() из Linux но для FreeBSD/OpenBSD. Но гораздо фичастее. Умеет, в том числе, и AIO.
  6. realtime signals. Мало где есть. За раз обрабатывается только один сигнал, а не несколько. Очередь сигналов может переполняться.

Что я забыл?

Да, в мире нет счастья.

Написано в: 23:25 | 1 комментарий | | теги: , , , | постоянная ссылка |
Добавить пост в:   Delicious Reddit Slashdot Digg Technorati Google


Последние комментарии

Комментарии

tomotom 13.07.2009 10:54

Спасибо, интересно.

ответить

Форма комментирования для «получение состояния сокетов в unix»

Обязательное поле. Не больше 30 символов.

Обязательное поле