Почему 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, но мне нужно больше контроля изнутри моего приложения.