Я пытаюсь в качестве упражнения реализовать простой формирователь трафика в go.
API: push (int): помещает int в формирователь out (): выводит 1 или более int (s)из формирователя.
push вызывается клиентами, и скорость не может контролироваться.out вызывается примерно каждые 1 мс и может выдавать 1 или более интервалов и пытается поддерживать постоянную скорость вывода r интс в 1с, но может выводить больше, если внутренний буфер формирователя находится под угрозой переполнения.Однако вывод должен быть как можно более равномерным.Например: Out: 1 1 2 2 2 1 лучше, чем Out: 1 1 5 1 1
, так как второй пример - пакетный (есть выход 5 дюймов).
У меня естьидея о том, как сделать это с помощью алгоритма Buckety Bucket.
Мой вопрос: Как реализовать в Go, что вывод вызывается полурегулярно примерно с тиками 1 мс?