URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 65753
[ Назад ]

Исходное сообщение
"Тематический каталог: Создание сервера для обработки событий..."

Отправлено auto_topic , 11-Апр-10 01:08 
Обсуждение статьи тематического каталога: Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)

Ссылка на текст статьи: https://www.opennet.ru/base/dev/epoll_intro.txt.html


Содержание

Сообщения в этом обсуждении
"Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)"
Отправлено evgeny_t , 11-Апр-10 01:08 
хотелось бы комментарии на русском, легче было бы читать

"Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)"
Отправлено Веслый мясник , 11-Апр-10 02:24 
К моменту написания данного текста доступна (во всех смыслах) информация типа man epoll. Она включает в себя пример кода (более удобоваримый) и что-то вроде faq, "там все прекрасно описано"(цитата). Вместо солидного куска кода (зачем? каждая лишняя строка уменьшает кол-во дочитавших до конца) Было бы интересней сравнить poll, ppoll,epoll,select,pselect,... Ну, то есть тем,кому лень Стивенсов и маны читать.

"Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)"
Отправлено Alexander , 11-Апр-10 15:23 
У Стивенса нет информации по epoll, хотя все остальные вызовы довольно неплохо описаны.  Код и описание на нормальном уровне, а вот вопрос своевременности... И еще момент: может сейчас лучше использовать libevent вместо низкоуровневых системных вызовов? И с переносимостью дела будут лучше обстоять.

"Создание сервера для обработки событий с использованием epol..."
Отправлено Maksud , 15-Апр-10 17:59 
>У Стивенса нет информации по epoll, хотя все остальные вызовы довольно неплохо
>описаны.  Код и описание на нормальном уровне, а вот вопрос
>своевременности... И еще момент: может сейчас лучше использовать libevent вместо низкоуровневых
>системных вызовов? И с переносимостью дела будут лучше обстоять.

Точно, надо было сразу на libevent писать, как то не сообразил, перепишу как только освобожусь, а эту версию можно оставить для истории. ;-)


"Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)"
Отправлено Rubber Cthulhu , 15-Апр-10 10:25 
При закрытии соединения клиент не удаляется из epoll'а.

"Создание сервера для обработки событий с использованием epol..."
Отправлено Maksud , 15-Апр-10 17:50 
В документации (http://linux.die.net/man/4/epoll) написано что при закрытии дескриптора, он автоматически удаляется из epoll.

QUESTIONS AND ANSWERS (from linux-kernel)
Q6
    Will the close of an fd cause it to be removed from all epoll sets automatically?
A6
    Yes.


"Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)"
Отправлено Maksud , 15-Апр-10 18:04 
Спасибо за комментарии, учту все: на русском, кратко и сжато, с libevent.

"Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)"
Отправлено Fervent , 08-Май-10 09:22 
Thanks a lot)

"Создание сервера для обработки событий с использованием epoll (epoll linux select gcc)"
Отправлено Аноним , 10-Июн-10 17:18 
реально epoll появилась уже давно и не для кого не секрет)

"."
Отправлено Everard , 07-Апр-11 09:17 
Еще не плохо было бы сделать обработку EPOLLERR в цикле, т.к. если этого не сделать, то программка может упасть.
Например, так:

// ...
for(int i = 0; i < epoll_events_count ; i++)
{
    if(events[i].events & EPOLLERR)
    {
        // обработка ошибки, например:
        close(events[i].data.fd);
        clients_list.remove(events[i].data.fd);
        continue;
    }
    // ...