Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Thread in die unendlichkeit... (https://www.delphipraxis.net/8292-thread-die-unendlichkeit.html)

braingrenade 1. Sep 2003 20:45


Thread in die unendlichkeit...
 
Moin Leute !

Wie kann ich einen thread unendlich lang laufen lassen ?

tommie-lie 1. Sep 2003 20:54

Re: Thread in die unendlichkeit...
 
ins Execute:
Delphi-Quellcode:
while True do
  writeln("Hello, world");
:mrgreen:

aber im Ernst: Ein Thread läuft solange, bis er fertig ist. Eine Endlosschleife lässt ihn bis zum Sankt-Nimmerleinstag laufen. Aber damit du ihn überhaupt wieder abbrechen kannst, solltest du immer auf ein Terminate prüfen ;-)

braingrenade 1. Sep 2003 20:55

Re: Thread in die unendlichkeit...
 
MIt ner endlos-SChleife im thread hab ich das auch schon probiert ,
aber das will nich richtig , gibt's keine Möglichkeit den Thread nach dem beenden glaich wieder von neuem zu starten?
edit : Wie kann ich in auf Terminate prüfen ?

Chewie 1. Sep 2003 21:20

Re: Thread in die unendlichkeit...
 
Delphi-Quellcode:
while not Terminated do
begin
  //mach was
end;
So läuft er, bis er terminiert ist.

Leuselator 1. Sep 2003 21:33

Re: Thread in die unendlichkeit...
 
Wer will schon sowas?
Bessere alternative, den Rechner zu beschäftigen:
function SETI(Comitment : TCpuPower): ET
:)

Luckie 1. Sep 2003 21:45

Re: Thread in die unendlichkeit...
 
Zitat:

Zitat von tommie-lie
Eine Endlosschleife lässt ihn bis zum Sankt-Nimmerleinstag laufen.

Nein, nur so lange, wie der Parent-Prozess läuft.
Zitat:

Aber damit du ihn überhaupt wieder abbrechen kannst, solltest du immer auf ein Terminate prüfen ;-)
Und was bringt das? Das lioefert entweder "läuft noch" oder "läuft nicht mehr" zurück. Abbrechen kann er auch ohne zu testen.

Reden wir hier eigentlich von API-Threads oder vom TThread VCL Objekt?

Und poste mal, was bei dir in der Execute Methode bzw. in der Thread-Funktion ausgeführt wird.

braingrenade 2. Sep 2003 15:14

Re: Thread in die unendlichkeit...
 
jo , hier is mla der code ,
aber wenn ihr's compiliert herscht akute abstürtz gefahr (ca .150 TThreads) !!! :roteyes:

edit: möglicherweise verwurmtes attachment gelöscht

braingrenade 3. Sep 2003 13:17

Re: Thread in die unendlichkeit...
 
so , ich poste den execute code mal so :

Delphi-Quellcode:
procedure Tsynapse.update;
var in1,out1,in2,out2 : integer;
begin
in1 := input1^;
in2 := input2^;
if in1 > 0 then out1 := round( in1 * (100 / conductivity))
else out1:=0 ;
if in2 > 0 then out2 := round( in2 * (100 / conductivity))
else out2:=0 ;
if (in2 > 0) and (in1 > 0) then conductivity := conductivity+1;
if (conductivity > 4) and (in2 = 0) and (in1 = 0) then conductivity := conductivity-0.1;
output1^ := output1^ + out1;
output2^ := output2^ + out2;
end;

procedure Tsynapse.execute;
begin
while not Terminated do
update;
end;

procedure Tneuron.update;
begin
if input >= inputlimit then
begin
output := input;
send := true;
input:=0;
end else
begin
output := 0;
input:=0;
end;
if send = true then
begin
sendtimer := sendtimer +1;
if sendtimer = 5 then
 begin
 send := false;
 sendtimer := 0;
 end;
end else output := 0;
end;

procedure Tneuron.execute;
begin
while not Terminated do
update;
end;


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