¿Por qué Thread.Sleep () consume tanta CPU?

Tengo una página ASP.NET con este código pseduo:

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

Cualquier cliente que solicite esta página comenzará a descargar un archivo binario. Todo está bien en este punto, pero los clientes no tenían límite en la velocidad de descarga, por lo que cambiaron el código anterior a esto:

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

El problema de velocidad está resuelto ahora, pero bajo prueba con 100 clientes concurrentes que se conectan uno tras otro (3 segundos de retraso entre cada nueva conexión) el uso de la CPU aumenta cuando aumenta el número de clientes y cuando hay 70 ~ 80 clientes concurrentes, la CPU alcanza el 100% y se rechaza cualquier nueva conexión. Los números pueden ser diferentes en otras máquinas, pero la pregunta es por qué Thread.Sleep () es tan intensivo en CPU y ¿hay alguna forma de acelerar el cliente sin que la CPU aumente?

Puedo hacerlo a nivel de IIS pero necesito más control desde el interior de mi aplicación.

Respuestas a la pregunta(4)

Su respuesta a la pregunta