Что именно делает неблокирующий блок сокетов? Возможная опасность использования epoll() в режиме, запускаемом по фронтуLinux

Ответить Пред. темаСлед. тема
Anonymous
 Что именно делает неблокирующий блок сокетов? Возможная опасность использования epoll() в режиме, запускаемом по фронту

Сообщение Anonymous »


Предположим, мы хотим написать сервер для обработки нескольких клиентов с помощью epoll в режиме Edge-Triggered.
При использовании epoll() в режиме, запускаемом по границе, всякий раз, когда сервер получает событие EPOLLOUT или EPOLLIN, он должен записать или читайте до тех пор, пока не получите EWOULDBLOCK или EAGAIN.

Предположим, клиент подключается и отправляет ОЧЕНЬ длинное сообщение. Теперь сервер должен читать его до тех пор, пока не получит EWOULDBLOCK или EAGAIN.

Может ли сервер быть уверен, что EWOULDBLOCK или EAGAIN получен через некоторое разумное время и не прочитает гигабайты данных от этого клиента , пока все остальные клиенты ждут?

Это не просто вопрос «да» или «нет». Я с нетерпением жду возможности понять, как эта блокировка контролируется на уровне ОС.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»