Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Threads - Externe Funktionen (https://www.delphipraxis.net/160004-threads-externe-funktionen.html)

-187- 22. Apr 2011 13:29

Threads - Externe Funktionen
 
Hallo,

ich möchte ein Online API benutzen. Der Anbieter stellt eine "Work.dll" zur Verfügung. In den Beispielen vom Anbieter werden die Funktionen beispielsweise so bekannt gemacht:

Delphi-Quellcode:
function WorkInit:integer; stdcall; external 'Work.dll' name 'WorkInit';


Ich habe eine Multithread Anwendung welche auf diese Funktionen zugreift.

Wenn zwei Threads auf die Funktion gleichzeitig zugreifen, hat dann jeder Thread seine "eigene Funktion" ? (Thread Safe)

Greetz

Medium 22. Apr 2011 15:51

AW: Threads - Externe Funktionen
 
Das lässt sich nicht pauschal sagen. Wirkliche Antwort kann hier nur der Ersteller der DLL geben.

himitsu 22. Apr 2011 16:55

AW: Threads - Externe Funktionen
 
Erstmal haben alle Threads die selbe Funktion.
Und wenn der Code in der Funktion threadsicher ist (nix unsicheres Externes/Globales nutzt)
oder wenn der DLL-Ersteller die Funktion threadsicher ausgelegt hat,

dann ist der Funktionsaufruf threadsicher.

Medium 22. Apr 2011 18:01

AW: Threads - Externe Funktionen
 
Oder fassen wir es so: Die Tatsache, dass es sich um eine Funktion aus einer DLL handelt alleine, spricht nicht gegen Multithreading. Es kann aber durchaus sein, dass die Funktion innerhalb der DLL Ressourcen nutzt, die nicht in ihr lokal sind, was unter Umständen dann gegen Threads spricht. Dann wäre der letzte Ausweg noch, statt Multithreading "Multiprocessing" zu betreiben, und jedem Prozess seine eigene DLL-Instanz zu verpassen. Aber auch dann wäre noch immer nicht gesichert, dass keine externen Ressourcen gemeinsam genutzt würden.

Kurzum: Frag den Ersteller, alles andere ist zeitintensives Raten und Testen :)

himitsu 23. Apr 2011 00:28

AW: Threads - Externe Funktionen
 
Oder man kapselt die Aufrufe selber und sort dort dafür, daß immer nur ein Thread gleichzeitig dieses ausführt.

-187- 23. Apr 2011 15:44

AW: Threads - Externe Funktionen
 
Hey, danke für die Antworten. Bin jetzt erstmal auf die HTTP API umgestiegen. Alles andere erschien mir zu aufwendig :)


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