Por que Thread.Sleep () é tão intensivo em CPU?

Eu tenho uma página ASP.NET com este código pseduo:

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

Qualquer cliente que solicitar esta página começará a baixar um arquivo binário. Tudo está bom neste momento, mas os clientes não tinham limite na velocidade de download, portanto, alteramos o código acima para isso:

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

O problema de velocidade está resolvido agora, mas em teste com 100 clientes simultâneos que se conectam um após o outro (intervalo de 3 segundos entre cada nova conexão), o uso da CPU aumenta quando o número de clientes aumenta e quando há de 70 a 80 clientes simultâneos, a CPU atinge 100% e qualquer nova conexão é recusada. Os números podem ser diferentes em outras máquinas, mas a questão é por que o Thread.Sleep () consome muita CPU e existe alguma maneira de acelerar o processo do cliente sem que a CPU suba?

Posso fazer isso no nível do IIS, mas preciso de mais controle de dentro do meu aplicativo.

questionAnswers(4)

yourAnswerToTheQuestion