Sunday, 12 July 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. Мало где есть. За раз обрабатывается только один сигнал, а не несколько. Очередь сигналов может переполняться.

Что я забыл?

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

Write on: 23:25 | 1 comment | | tags: , , , | permalink |
Add post to:   Delicious Reddit Slashdot Digg Technorati Google


Add comment

Comments

tomotom 13.07.2009 10:54

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

reply

Comment form for «получение состояния сокетов в unix»

Required. 30 chars of fewer.

Required.