![]() |
Multithreadanwendung koordinieren
Hallo, endlich sommer! :)
Ich möchte eine Multithreadanwendung implementieren, der eine Thread soll so lange laufen, wie er nicht beendet worde, d.h. in seiner execute steht
Delphi-Quellcode:
und in der anderen DarstThread.Execute steht:
while not terminated do begin
if UsbParIn(c_DevNum,instream,c_laen) then begin weitergabe:=instream; DarstThread.Resume; // hier soll der andere Thread angestoßen werden end; end; // while
Delphi-Quellcode:
procedure darst_Thread.Execute;
var i,max,min:integer; mittel:double; begin irgendwas; suspend; end; und immer an der markierten stelle soll der erste thread den zweiten Thread anstoßen, damit der zweite seine execute-Prozedur einmal ausführt. Im Moment sieht es so aus, die zweite exe-Proz einmal ausgeführt wird, dann aber nicht mehr. Was kann ich tun? Mit
Delphi-Quellcode:
sollte doch der DarstThread angehalten werden, um dann, wenn der erste Thread wieder
suspend
Delphi-Quellcode:
gibt, weiterzulaufen.. :?:
resume
|
Re: Multithreadanwendung koordinieren
Ein Resume führt den Thread nur weiter, das bedeutet, der Thread läuft weiter, wo er aufgehört hat: kurz vorm end. Am besten setzt du den Code dort auch in eine while not Terminated-Schleife ;)
|
Re: Multithreadanwendung koordinieren
Ich kenne ja nicht das komplette Programm, allerdings solltest du dir bewusst sein, dass der 1. Thread eventuell schon Resume aufruft, obwohl der 2. noch nicht Suspended ist.
Das ist zwar grundsätzlich kein Problem, aber die beiden Threads sind nicht synchron Also ist blos nen Hinweis. Eventuell ist es ja Absicht ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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