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 Wie prüfen, ob ein Thread bereits in Verwendung ist? (https://www.delphipraxis.net/187515-wie-pruefen-ob-ein-thread-bereits-verwendung-ist.html)

devidespe 5. Dez 2015 19:26

Wie prüfen, ob ein Thread bereits in Verwendung ist?
 
Hallo,

ich habe einen Thread, den ich 10 Mal benötige, also in einem statischen Array von 1..10 deklariere. Soweit so gut.

Nun gibt es Funktionen in meiner Applikation, die sich einen freien dieser 10 Threads rausgreifen sollen und ihn initialisieren und starten sollen.

Die Frage ist allerdings, wie ich bei einem Thread überhaupt prüfen kann, ob er bereits initialisiert wurde (weil ich dann einen anderen verwenden müsste)?

Meine Idee mit:
Delphi-Quellcode:
for i:=1 to 10 do
if ThreadName[i] <> nil then ...
scheint aber zumindest bei mir nicht zu funktionieren. Habt ihr andere Ideen?

Dejan Vu 5. Dez 2015 20:47

AW: Wie prüfen, ob ein Thread bereits in Verwendung ist?
 
Der Thread meldet sich selber ab. Das Ganze noch gelockt, d.h. mit einer critical section ummantelt und fertig.

Oder Du suchst mal nach ThreadPools. In den neueren Delphi-Versionen ist schon einer dabei.

Oder Du verzichtest auf das statische Array (ist sowieso der falsche Ansatz) und erzeugst Threads frei nach Schnauze (nur nicht zu viele)

Luckie 5. Dez 2015 21:23

AW: Wie prüfen, ob ein Thread bereits in Verwendung ist?
 
Man könnte es sich auch einfach merken in einem zweite Boolean Array oder in einem zweidimensionalen Array.

Dejan Vu 5. Dez 2015 21:48

AW: Wie prüfen, ob ein Thread bereits in Verwendung ist?
 
Zitat:

Zitat von Luckie (Beitrag 1323495)
Man könnte es sich auch einfach merken in einem zweite Boolean Array oder in einem zweidimensionalen Array.

Und wer markiert 'Thread X ist wieder zu haben?'? ;-)

Luckie 5. Dez 2015 21:59

AW: Wie prüfen, ob ein Thread bereits in Verwendung ist?
 
Der Thread kann eine Nachricht schicken oder ein Event auslösen, wenn es sich beendet.

Luckie 5. Dez 2015 22:04

AW: Wie prüfen, ob ein Thread bereits in Verwendung ist?
 
Oder Windows Threadpools. Siehe mein Threadtutorial dazu Kapitel 8:
http://michael-puff.de/Programmierung/Delphi/Tutorials/


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