Почему 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 секунды между каждым новым connection) загрузка ЦП увеличивается, когда количество клиентов увеличивается, а когда одновременно работает 70 ~ 80 клиентов, ЦП достигает 100%, и любое новое соединение отклоняется. На других машинах номера могут отличаться, но вопрос в том, почему Thread. Sleep () так интенсивно загружает процессор, и есть ли способ ускорить работу клиента без повышения производительности процессора?

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

11
задан Xaqron 7 October 2010 в 21:58
поделиться