История изменений
Исправление Reset, (текущая версия) :
А так придется писать менеджер списков; придумывать структуры для хранения статусов клиентов; следить, чтобы память не текла с этими списками...
Если нужно именно именно C, то в libevent/libev уже всё сделано.
2) Как быть, если одновременно N клиентов отдают тебе что-то?
Если ты действительно тут начинаешь упираться в процессор, то самое простое решение — создать N event-loop'ов, где N==число_ядер.
Заставлять их ждать, обслуживая поочередно? А если им «надоест»?
С этой проблемой можно столкнуться в любом случае. Если надоест, то на очередном read ты получишь 0, тогда можно смело закрывать соединение.
Исходная версия Reset, :
А так придется писать менеджер списков; придумывать структуры для хранения статусов клиентов; следить, чтобы память не текла с этими списками...
Если нужно именно именно C, то в libevent/libev уже всё сделано.
2) Как быть, если одновременно N клиентов отдают тебе что-то?
Если ты действительно тут начинаешь упираться в процессор, то самое простое решение — создать N event-loop'ов.
Заставлять их ждать, обслуживая поочередно? А если им «надоест»?
С этой проблемой можно столкнуться в любом случае. Если надоест, то на очередном read ты получишь 0, тогда можно смело закрывать соединение.