![]() |
Thread in die unendlichkeit...
Moin Leute !
Wie kann ich einen thread unendlich lang laufen lassen ? |
Re: Thread in die unendlichkeit...
ins Execute:
Delphi-Quellcode:
:mrgreen:
while True do
writeln("Hello, world"); 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 ;-) |
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 ? |
Re: Thread in die unendlichkeit...
Delphi-Quellcode:
So läuft er, bis er terminiert ist.
while not Terminated do
begin //mach was end; |
Re: Thread in die unendlichkeit...
Wer will schon sowas?
Bessere alternative, den Rechner zu beschäftigen: ![]() :) |
Re: Thread in die unendlichkeit...
Zitat:
Zitat:
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. |
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 |
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 23:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz