LINUX.ORG.RU

История изменений

Исправление Reset, (текущая версия) :

А так придется писать менеджер списков; придумывать структуры для хранения статусов клиентов; следить, чтобы память не текла с этими списками...

Если нужно именно именно C, то в libevent/libev уже всё сделано.

2) Как быть, если одновременно N клиентов отдают тебе что-то?

Если ты действительно тут начинаешь упираться в процессор, то самое простое решение — создать N event-loop'ов, где N==число_ядер.

Заставлять их ждать, обслуживая поочередно? А если им «надоест»?

С этой проблемой можно столкнуться в любом случае. Если надоест, то на очередном read ты получишь 0, тогда можно смело закрывать соединение.

Исходная версия Reset, :

А так придется писать менеджер списков; придумывать структуры для хранения статусов клиентов; следить, чтобы память не текла с этими списками...

Если нужно именно именно C, то в libevent/libev уже всё сделано.

2) Как быть, если одновременно N клиентов отдают тебе что-то?

Если ты действительно тут начинаешь упираться в процессор, то самое простое решение — создать N event-loop'ов.

Заставлять их ждать, обслуживая поочередно? А если им «надоест»?

С этой проблемой можно столкнуться в любом случае. Если надоест, то на очередном read ты получишь 0, тогда можно смело закрывать соединение.