Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Mehrere Threads starten automatisch (https://www.delphipraxis.net/159282-mehrere-threads-starten-automatisch.html)

SyntaxXx 21. Mär 2011 22:02

Mehrere Threads starten automatisch
 
Guten Abend zusammen, ich habe eine Frage, wo ich mir jetzt schon die ganze Zeit meinen Kopf zerbreche.
Also ich ahbe ein Programm geschrieben, welches ganz stubide immer 1 addiert.

Hier der Code:
Code:
procedure TThread1.Execute;
var i : integer;
    list : TStringList;
begin
list := TStringList.Create;
Form1.ProgressBar1.Min := StrToInt(Form1.Edit1.Text);
Form1.ProgressBar1.Max := StrToInt(Form1.Edit2.Text);
for i := StrToInt(Form1.Edit1.Text) to StrToInt(Form1.Edit2.Text) do
begin
  List.Add(IntToStr(i));
  Form1.ProgressBar1.Position := i;
end;
 List.SaveToFile(Form1.Edit1.Text+'-'+Form1.Edit2.Text+'.txt');
 List.Free;
end;
Das ganze wird in einem Thread gestartet wie man sieht.
Ich möchte das ganze jetzt ein wenig beschleunigen, indem ich das ganze in mehreren Threads starte.

Jetzt ist nur die Frage, wie ich das jetzt am besten realisiere?

Soll ich z.B. jedem Thread einen Bereich zu ordnen, den er generieren soll oder was denkt ihr?
Und wenn ja wie kann ich dass das aufteilen?

Hoffe ihr könnt mir helfen.

Klaus01 21. Mär 2011 22:13

AW: Mehrere Threads starten automatisch
 
Guten Abend,

ohne auf Deine Problemstellung einzugehen...

Aus einen Thread greift man nich ohne synchronisation auf Komponenten der GUI zu.

Das kann fürchterlich krachen.

Grüße
Klaus

BUG 21. Mär 2011 22:24

AW: Mehrere Threads starten automatisch
 
Zitat:

Jeder Zugriff auf Elemente der VCL muss mit der Methode Synchronize synchronisiert
werden.
Tu dir den Gefallen und lies mal in Ruhe das Tutorial von Luckie.

Wenn du es eilig hast etwas selbst auszuprobieren, solltest du zumindest mal folgendes daraus lesen:
  • Vorwort
  • Einführung
  • Grundlagen
  • Das VCL Thread-Objekt

Wenn man da unvorbereitet rumbastelt macht man halt dämliche Fehler:
zB. ich habe bei meinen ersten Experimenten mit Threads die Execute-Methode direkt aufgerufen und mich dann gewundert, das da nichts schneller/anders wird :mrgreen:

chaosben 22. Mär 2011 05:52

AW: Mehrere Threads starten automatisch
 
Und jetzt noch kurz zurück zum Thema: Ich persönlich halte es gern so, das die Threads sich aus einem Pool bedienen (bzw. bedient werden).
Das hat, gegenüber der "Bereichs-Lösung", den Vorteil, das ein Thread mal etwas länger arbeiten kann und die anderen Threads dadurch für ihn "einspringen".

//edit: Sorry an alle, denen ich mit der Einleitung (und nur das sollte es sein) zu nahe getreten bin. :)

Luckie 22. Mär 2011 06:02

AW: Mehrere Threads starten automatisch
 
Wo sind wir hier vom Thema abgekommen. Aber auch ich halte es für sinnvoll, wenn er erstmal die Grundlagen versteht und beherrscht bevor er sich an Threadpools versucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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