2012-02-20 3 views
2

Я пытаюсь найти лучший способ написать код передачи данных для системы клиент/сервер, которая обрабатывает сразу несколько клиентов.Отправка файлов нескольким клиентам?

Я уже храню список клиентов, которые подключаются (я использую NIO-блокировку без привязки).

Разве это не дорого для производительности, чтобы перебирать каждый клиент с каждым проходом на чтение и запись и записывать данные буфера на каждый канал? Есть ли лучший/более эффективный способ сделать это?

Я думал о разделении размера буфера в зависимости от количества клиентов. Это жизнеспособное решение?

ответ

1

Использование селекторов (как вы, кажется, делаете) действительно платит, когда вы обрабатываете действительно большое количество клиентов (и почему оптимизируйте для случая, в котором у вас нет, есть большое количество клиентов;)

Узкое место в такой системе редко является процессором, который выполняет итерацию, но I/O в любом случае, поэтому я не стал бы волноваться, если я, где вы.

+0

Так что просто итерация? – bgroenks

+0

И вы говорите, что я должен или не должен использовать селектор? – bgroenks

+0

есть использование селекторы! :-) – aioobe

Смежные вопросы