Почему Thread.Sleep () так сильно загружает процессор?

У меня есть страница ASP.NET с этим псевдо-кодом:

while (read)
{
   Response.OutputStream.Write(buffer, 0, buffer.Length);
   Response.Flush();
}

Любой клиент, который запрашивает эту страницу, начнет загружать двоичный файл. На данный момент все в порядке, но у клиентов не было ограничений по скорости загрузки, поэтому изменил приведенный выше код на этот:

while (read)
{
   Response.OutputStream.Write(buffer, 0, buffer.Length);
   Response.Flush();
   Thread.Sleep(500);
}

Проблема скорости теперь решена, но при тестировании 100 одновременных клиентов, которые подключаются один за другим (с интервалом в 3 секунды между каждым новым подключением), увеличивается загрузка ЦП при увеличении числа клиентов и при 70–80 одновременных клиентов. Процессор достигает 100%. и в любом новом соединении отказано. Числа могут отличаться на других машинах, но вопрос в том, почему Thread.Sleep () так сильно загружает процессор и есть ли способ ускорить работу клиента без увеличения загрузки процессора?

Я могу сделать это на уровне IIS, но мне нужно больше контроля изнутри моего приложения.

Ответы на вопрос(4)

Ваш ответ на вопрос