Ограничение скорости группы соединений в многопоточной среде - PullRequest
0 голосов
/ 06 февраля 2011

Мне интересно, какой алгоритм ограничения скорости наиболее эффективен, когда я хочу ограничить скорость передачи группы сокетов в многопоточной среде.В настоящее время я использую однопоточную конструкцию, основанную на классе Selector .Ограничить скорость передачи в этой системе довольно просто, но я рассматриваю возможность использования рабочих потоков для обработки всех операций ввода-вывода.Конечно, я хотел бы избежать накладных расходов на синхронизацию, если это возможно.

1 Ответ

1 голос
/ 06 февраля 2011

Каждый вызов чтения / записи Socket / SocketChannel включает в себя ряд синхронизаций.Вы можете ограничить скорость, с которой вы записываете данные, но попытка ограничить скорость, с которой вы читаете данные, вряд ли окажет большое влияние, она просто определит объем буферизации, а не скорость передачи данных.

Стоит отметить, что синхронизация обойдется в 2 микросекунды.Как только вы ограничите количество отправляемых данных, вы задержите гораздо большую цифру, скажем, от 100 до 100 000.

Я предлагаю вам внедрить что-то простое и работающее, а потом подумать об оптимизации.

...