Warum ist Thread.Sleep () so rechenintensiv?

Ich habe eine ASP.NET-Seite mit diesem pseduo-Code:

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

Jeder Client, der diese Seite anfordert, beginnt mit dem Herunterladen einer Binärdatei. Zu diesem Zeitpunkt ist alles in Ordnung, aber die Download-Geschwindigkeit der Clients war unbegrenzt. Ändern Sie daher den obigen Code in:

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

as @Speed-Problem ist jetzt behoben, aber im Test mit 100 gleichzeitigen Clients, die nacheinander eine Verbindung herstellen (3 Sekunden Verzögerung zwischen jeder neuen Verbindung), steigt die CPU-Auslastung, wenn die Anzahl der Clients zunimmt und wenn 70 bis 80 gleichzeitige Clients 100 erreichen % und jede neue Verbindung wird abgelehnt. Zahlen können auf anderen Rechnern unterschiedlich sein, aber die Frage ist, warum Thread.Sleep () so CPU-intensiv ist und gibt es eine Möglichkeit, den Client zu beschleunigen, ohne dass die CPU steigt?

Ich kann es auf IIS-Ebene tun, aber ich benötige mehr Kontrolle innerhalb meiner Anwendung.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage