Laden...

Threads

Erstellt von Cpt_Future vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.152 Views
C
Cpt_Future Themenstarter:in
97 Beiträge seit 2005
vor 18 Jahren
Threads

Hallo,

um einen Server testweise zu belasten, soll ich einige tausend Anfragen an den Server schicken, wobei etwa 20 Anfragen gleichzeit gesendet werden sollen. Also mit Threads.

Ich bin gerade beim Ausprobieren, frage mich aber wie ich das realisiere.

Mein Ansatz wäre


for (int i = 0; i < 20; i++)
{
  Thread t = new Thread(new ThreadStart(NextRequest));
  t.Start();
}

// ..

private int index = 0;
private void NextRequest()
{
  if (index <requests.Length) {
    SendServerRequest(requests[index++]);
    Thread.Sleep(50);
    // Thread.t = new Thread(new ThreadStart(NextRequest));
  }
}


Aber jetzt komme ich irgendwie raus, weil so werden ja nur die 1. 20 Requests zeitgleich gesendet. Muss ich am Ende der Methode NextRequest() jetzt die Zeile


Thread.t = new Thread(new ThreadStart(NextRequest));

entkommentieren? Oder ist das schlecht angesetzt?

Etwas nicht tun zu können, ist kein Grund etwas nicht zu tun.
-Alf

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Cpt_Future,

noch nicht mal die ersten 20 Request werden gleichzeitig gesendet, weil die Threads ja nacheinander gestartet werden. Anonsten verstehe ich das Problem nicht ganz.

herbivore

S
8.746 Beiträge seit 2005
vor 18 Jahren
C
Cpt_Future Themenstarter:in
97 Beiträge seit 2005
vor 18 Jahren

Naja gut, der Start den Threads kann ich ja nur sequentiell starten.

Etwas nicht tun zu können, ist kein Grund etwas nicht zu tun.
-Alf

P
939 Beiträge seit 2003
vor 18 Jahren

Einige tausend Anfragen, 20 Anfragen gleichzeitig.

Das hast du doch schon fast: 20 Threads, jeder sendet in einer Schleife, sagen wir, 500 Anfragen.

Dass die Threads minimal verzögert starten, spielt bei Webzugriffen keine Rolle. Wenn doch, könnte man die Threads direkt nach dem Start an einem WaitHandle blockieren und dann gleichzeitig(er) loslaufen lassen.

Gruss
Pulpapex