AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

thread erstellen

Ein Thema von painrestricter · begonnen am 30. Nov 2009 · letzter Beitrag vom 30. Nov 2009
Antwort Antwort
painrestricter

Registriert seit: 2. Nov 2009
43 Beiträge
 
#1

thread erstellen

  Alt 30. Nov 2009, 16:10
Hi,

bei mir haperts gerade bisschen am verständnis. Ich hab mir auf delphi treff das tutorial über Threads durchgelesen.
Wollte ich gleich mal ausprobieren. Jedoch brauch ich 200 threads.

Soll ich nun einen thread erstellen und diesen 200 mal aufrufen, zb mit einer for schleife, oder soll ich direkt 200 threads
erstellen? 200 threads einzeln zu erstellen wäre ein bisschen mühsam denke ich, wie kann man das machen?

danke
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: thread erstellen

  Alt 30. Nov 2009, 16:13
Zitat:
200 threads.
Wie, was und wozu denn ? Vill. gehts auch einfacher.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: thread erstellen

  Alt 30. Nov 2009, 16:14
Unter Win32 kann eine Anwendung maximal 16 (oder waren es 20?) aktive Threads haben. Erzähl doch mal was du mit 200 threads erreichen willst, gibt sicherlich eine bessere Lösung. Ansonsten: ja, du implementierst einen Thread und erzeugst dann mehrere Instanzen davon.

EDIT:
Zitat von Delphi-Hilfe:
Die Koordination zu vieler Threads verbraucht beträchtliche CPU-Zeit. Auf einem Ein-Prozessor-System stellen 16 aktive Threads die praktikable Obergrenze dar.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: thread erstellen

  Alt 30. Nov 2009, 16:17
Erstmal scheint mir die Anzahl völlig am Ziel der Threads vorbei zugehn.
Wofür brauchst du denn diese vielen Threads?

Wenn man z.B. 4 Prozessoren/Kerne hat, dann können praktisch immer nur 4 Prozesse/Threads gleichzeitig laufen.
Bei mehr müssen die Threads stückchenweise verteilt/abgearbeitet werden.

Wenn z.B. 2 Threads auf einem Kern liegen, dann werden diese abwechelnd bearbeitet (jeweils ein paar Millisekunden lang der Eine und dann wieder der Andere.


Hier würde ich mir eine Liste anlegen, wo die 200 Aufgaben drinstehn
und dann holt sich ein/mehrere Threads (maximal soviele wie CPUs/Kerne) sich dort eine Aufgabe raus, bearbeitet diese und holt sich dann die nächste Aufgabe, bis die Liste (Queue) leer ist.

PS: Windows sollte schon mehr als 16/20 Threads verkraften (vorallem wenn ein Großteil nicht viel zu tun hat ... jeder Prozeß hat mindestens einen Threads und du kannst hunderte/tausende Programme gleichzeitig ausführen)
$2B or not $2B
  Mit Zitat antworten Zitat
painrestricter

Registriert seit: 2. Nov 2009
43 Beiträge
 
#5

Re: thread erstellen

  Alt 30. Nov 2009, 18:11
naja wie soll ich das sagen, ich will 200 verbindungen zu einem webservice aufbauen, so ähnlich soll dass dann ausschauen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: thread erstellen

  Alt 30. Nov 2009, 18:30
für 200 Verbindungen braucht man doch aber keine 200 Threads. Wenn du 20 Label auf dein Formular packst brauchst du doch auch keine 20 Threads dafür.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

Re: thread erstellen

  Alt 30. Nov 2009, 19:16
Zitat von painrestricter:
Hi,

bei mir haperts gerade bisschen am verständnis. Ich hab mir auf delphi treff das tutorial über Threads durchgelesen.
Wollte ich gleich mal ausprobieren. Jedoch brauch ich 200 threads.

Soll ich nun einen thread erstellen und diesen 200 mal aufrufen, zb mit einer for schleife, oder soll ich direkt 200 threads
erstellen? 200 threads einzeln zu erstellen wäre ein bisschen mühsam denke ich, wie kann man das machen?

danke
Stimmt - wenn man tausend Labels auf einem Formular erzeugen will, macht man das ja auch nur im Notfall manuell

Man kann eine Threadklasse einmal schreiben, und von dieser dann in einer Schleife beliebig viele erzeugen.

Jeder Thread kann dann entweder sofort ei der Erzeugung auch gestartet werden, oder man kann alle erst einmal z.B. in eine TObjectList aufnehmen und dann der Reihe nach starten.

Wichtig ist dass alle Objekte ausserhalb der Threads threadsicher angesprochen werden (GUI und gemeinsam genutzte Daten).

Ich nehme an es wird ein Stresstest für einen Web Service?

Cheers,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
painrestricter

Registriert seit: 2. Nov 2009
43 Beiträge
 
#8

Re: thread erstellen

  Alt 30. Nov 2009, 21:11
naja, na gut, es geht eben darum, meinen flooder weiter auszubauen, ich habe mir mehrere flood arten geschrieben (icmp, http, ping, syn) und will jetzt mit mehreren threads flooden. (nur zu übungszwecken und MEINEN root (unlimited traffic, sonst würd ich mich ja ruinieren^^)

wie ich das anstell, das ist mein problem.

Zitat:
Man kann eine Threadklasse einmal schreiben, und von dieser dann in einer Schleife beliebig viele erzeugen.
genau so hab ich mir das auch vorgestellt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz