Entwickler-Ecke
Internet / Netzwerk - TIdHTTP und TTread
theo - Mo 17.09.07 14:48
Titel: TIdHTTP und TTread
Hallo!
Ich habe folgende Aufgabenstellung:
Anzeige von ca. 500 Messwerten im Netz (über HTTP erreichbar). Die Antwortzeit pro Messstelle beträgt zwischen 500 ms und 1s.
Meine Idee:
Pro Messstelle einen Thread erzeugen.
Meine Frage, sind 500 Threads durch den Hauptthread händelbar, oder ist das System dann mit dem verwalten der Threads beschäftigt?
Stefan.Buchholtz - Mo 17.09.07 14:59
Wenn die Threads alle gleichzeitig was machen, hast du schon einen erheblichen Verwaltungsaufwand. Sind von den 500 Threads immer die meisten mit Warten beschäftigt, ist das denke ich weniger ein Problem.
Ich würde es so machen, dass eine konfigurierbare Maximalzahl von Threads gleichzeitig existiert - dann kannst du das beste Laufzeitverhalten durch Experimente ermitteln.
Stefan
Wolle92 - Mo 17.09.07 15:05
Dadurch, dass die Threads warten müssen, kann man für 500 Threads und einer Wartezeit von 500-1000ms doch theoretisch einen Timer benutzen, der alle 50ms einen neuen Thread erzeugt... dadurch warten die anderen während dieser Zeit und die Arbeit verlagert sich
theo - Mo 17.09.07 15:22
Danke Stefan.
Deine Idee klingt gut.
Ich habe jetzt einen Test gemacht.
- 500 Threads mit sleep(10) im Execute als Schleife
Ergebnis:
- sehr langer Programmstart
- beim Programmende kommt eine Fehlermeldung von IDE "Prozessbeendigung dauert zu lange"
Wolle92 - Mo 17.09.07 15:40
ads ist ja auch nicht das was ich meine...
eher so, dass du eine Variable i zu Form1 hinzufügst und dann einen Timer nimmst, der bis i 500 ist die besagten neuen Threads erstellt... Sonst werden einfach nur Threads erstell und mit sleep wird der ganze Programmablauf gestoppt...
Außerdem bin ich Wolle und nicht Stefan ;)
theo - Mo 17.09.07 15:52
Wolle92 hat folgendes geschrieben: |
| Außerdem bin ich Wolle und nicht Stefan ;) |
Ich habe mich auch auf den Beitrag von Stefan bezogen.
Ich werde folgende Variante testen:
- Datenspeicher für 500 Werte ( array[0..499] of .. )
- Index auf die nächste Speicherzelle
- variable Anzahl von Threads
- Starten des Threads für eine Speicherzelle --> Index erhöhen, bzw. zurück zum Anfang
- Bei Threadende --> Restart für neue Speicherzelle lt. Index
Wenn ich das Ergebnis habe gebe ich Euch bescheid.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!