Реализовал ограничение пропускной способности описанным на этом форуме методом – пакеты кладутся в очередь и достаются по таймеру. Но даже если я на каждом хите таймера достаю все пакеты и отправляю клиенту максимальная ширина по сравнению с реальной падает( Грубо говоря в 2 раза. При максисмуме моего соединения около 1Мб/с качается ~400-500кб/с. Значения таймера пробовал от 200 до 1. На 200 вообще дай бог 100 кб/с идет. Собственно и вопрос – что может быть не так? Реализовывал на managed c++ с использованием managed классов типа Queue, String итд. Могло ли это повлиять на скорость? Если да то дайте пожалуйста пример на unmanaged c++ – у меня с ним совсем плохо(
Upd. Видимо managed классы не влияют тк вся последовательность действий по определению пакета в очередь и доставания из нее перенесенная в главную процедуру обработки пакетов скорость не уменьшила. Весь тот же код выполняющийся по таймеру уменьшает(
Upd. А могут ли вызовы таймера накладываться друг на друга? Просто при значении его в 3мсек пакеты идут медленнее чем в 10мсек
Upd. Блог какой то вышел… В общем проблема вроде бы решилась заменой System::Timers::Timer на waitForSingleObject с таймаутом в 10. Очень интересно в чем разница – может есть какие то предположения?