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.