Я пишу пару клиент-сервер UDP многоадресной передачи в C #, и мне нужна задержка порядка 50-100 мкс (микросекунд), чтобы снизить скорость передачи сервера. Это помогает избежать значительной потери пакетов, а также помогает избежать перегрузки клиентов, связанных с дисковым вводом / выводом. Пожалуйста, не предлагайте Thread.Sleep или Thread.SpinWait. Я бы не спросил, нужен ли мне какой-либо из них.
Моей первой мыслью было использование какого-то высокопроизводительного счетчика и выполнение простого цикла while (), проверяющего истекшее время, но я бы хотел этого избежать, так как это кажется грязным. Не приведет ли это также к загрузке ЦП для серверного процесса?
Бонусные баллы за кроссплатформенное решение, то есть не для Windows. Заранее спасибо, ребята!