Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MultiThreading Bei mir ca. 40x Langsamer bei IntegerBerechnu (https://www.delphipraxis.net/75381-multithreading-bei-mir-ca-40x-langsamer-bei-integerberechnu.html)

Hallo_Thomas 21. Aug 2006 20:13

Re: MultiThreading Bei mir ca. 40x Langsamer bei IntegerBere
 
Liste der Anhänge anzeigen (Anzahl: 1)
:-D Hallo, habe die letzten Tage ein bisschen daran an meinem Thread-Problem gearbeitet, um zu Erfahren ob das Verwalten von Threads aufwendiger ist als das ständige neu erstellen.

So wollte ich probeweise die Schleife in den Thread verlegen.

Leider schaffe ich auch den Spass nicht, ich wollte den Thread mit Suspend anhalten und mit Resume weilterlaufen lassen,doch leider klappt dies nicht!!!


Die Änderungenen:

So Starte ich die beiden Thread

Delphi-Quellcode:
     TThread1.Create(Feld);
     TThread2.Create(Feld);
So ist die deklaraion:
Delphi-Quellcode:
Thread1:TThread1;
Thread2:TThread2;

Delphi-Quellcode:
procedure TThread1.Counten2(Var Feld1:TIntegerDynArray);
Var x,y,z:Integer;
begin
    i:=0;

    for z:=0 to 150 do
    begin
      for y:=0 to 13 do
      for x:=0 to 156 do Feld1[x]:=Feld1[x]+1*2 div 2;
      x:=SumInt(Feld1);
      Inc(i);

      Thread2.Resume;
       Form1.Label2.Caption:=IntToStr(i);
      Thread1.suspend;
    end;
   Form1.Label2.Caption:=IntToStr(i);
end;
Delphi-Quellcode:
procedure TThread2.Counten2(Var Feld1:TIntegerDynArray);
Var x,y,z:Integer;
begin
    Thread2.suspend;
    for z:=0 to 150 do
    begin
      for y:=0 to 13 do
      for x:=0 to 156 do Feld1[x]:=Feld1[x]+1*2 div 2;
      x:=SumInt(Feld1);
      Thread1.Resume;
      Thread2.suspend;
    end;
end;
Bitte nicht über den Sinn oder Unsinn lappertieren dieser beiden Codes,ich möchte hiermit erst mal das anhalten und weitermachen zwischen 2 Threads üben.Leider wird das i im ersten Thread nicht höher als 1 gezählt!Und wenn ich es nach reume auslesen will passiert gar nix.

C.Schoch 21. Aug 2006 20:47

Re: MultiThreading Bei mir ca. 40x Langsamer bei IntegerBere
 
Hi,
Und da gabs keine AV :gruebel:
Delphi-Quellcode:
Thread2.Resume;
IMHO muss das so aussehen

Delphi-Quellcode:
Thread1 := TThread1.Create(Feld);
Thread2 := TThread2.Create(Feld);
Und auf die Variablen Thread1 und Thread2 muss dann so zugegriffen werden:

Delphi-Quellcode:
TGeldStatistikThread.Thread2.Resume;
@all Bitte korregieren, wenn ich Mist gebaut habe.

Hallo_Thomas 21. Aug 2006 21:10

Re: MultiThreading Bei mir ca. 40x Langsamer bei IntegerBere
 
@C.Schoch

Da ich immer zwischen den Beiden Threas wechsle, habe ich es in die Threads eingesetzt, aber wie bekomme ich in ausserhalb des Threads mit, wenn er angehalten ist & gleichzeitig den Thread2 Starte?

C.Schoch 21. Aug 2006 21:26

Re: MultiThreading Bei mir ca. 40x Langsamer bei IntegerBere
 
Das ist auch nicht das Problem, das Problem liegt IMO daran das dein Thread2.Resume in Thread1 und genauso dein Threa1.Resume in Thread2 "ungehört verpufft", da der Windows gar nicht weis wem es das Resume zurufen soll.

[edit]Du kannst auf Suspended prüfen[/edit]
[edit1]Ich glaube du solltest dir mal das Tutorial "Threads mit Delphi" von Luckie anschauen (mir hats was gebracht :wink: ) Tutorial


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr.
Seite 3 von 3     123   

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