Prototyp und Beschreibung der Funktion setmultithreading() (Nicht freischaltpflichtige Funktion) |
setmultithreading() Schalten der Verwendung von GeoDLL in einer Multithreading-Umgebung. Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!): extern "C" __declspec(dllimport) unsigned long __stdcall setmultithreading( unsigned long lSwitch); Prototyp der DLL-Funktion in Visual Objects Syntax: _DLL function setmultithreading(; lSwitch as logic); // 4 Byte as logic pascal:geodll32.setmultithreading // 4 Byte Die Funktion schaltet die Verwendung der GeoDLL-Funktionen in einer Multithreading-Umgebung ein- oder aus. Wenn in lSwitch der Wert TRUE übergeben wird, ist der Betrieb in einer Multithreading-Umgebung möglich, andernfalls kommt es zu Komplikationen im Multithreading-Betrieb. Nach dem Programmaufruf bzw. dem Laden der GeoDLL ist der Betrieb in einer Multithreading-Umgebung standardmäßig ausgeschaltet. Der erste Thread sollte die Funktion setMultithreading() mit dem Parameter TRUE aufrufen, um die Multithreading-Fähigkeit herbeizuführen. Dabei wird der critical section handler von WINDOWS initialisiert. Für die folgenden Aufrufe von GeoDLL-Funktionen wird für alle zu durchlaufenden kritischen Bereiche vom aktiven Thread das critical section flags gesetzt. Ein gesetztes critical section flag verhindert das gleichzeitige Durchlaufen der kritischen Bereiche von mehreren Threads. Alle Threads müssen warten, bis der aktive Thread das critical section flag wieder zurückgesetzt hat. Die Verwendung in einer Multithreading-Umgebung setzt die Geschwindigkeit der GeoDLL-Funktionen ein wenig herab. Durch den Aufruf der Funktion setMultithreading() mit dem Parameter FALSE wird die Multithreading- Fähigkeit wieder ausgeschaltet. Das Ausschalten erübrigt sich, wenn bis zum Beenden der Applikation die Multithreading-Fähigkeit beibehalten werden soll. Die Freigabe der durch den critical section handler gebundenen Resourcen wird von der GeoDLL veranlasst. Es gibt weitere Schalter, die GeoDLL auf den Betrieb in verschiedenen Umgebungen vorbereiten. Dies sind die Funktionen setstringallocate() setinternerrsys() setstaticuse() setsilence() seteventloop() Im Multithreading-Betrieb müssen die automatische Allokation von Speicherplatz in globale Adressen [setstringallicate()] und die Verwendung der internen Fehlerbehandlungsroutine [setinternerrsys()] ausgeschaltet sein. Die Parameter werden folgendermaßen übergeben bzw. zurückgegeben: lSwitch Schalter für den Multithreading-Betrieb TRUE Multithreading-Fähigkeit einschalten FALSE Multithreading-Betrieb ausschalten (default) returnWert Im Fehlerfall gibt die Funktion FALSE zurück, sonst TRUE. Freischaltung: Die Funktion ist nicht freischaltpflichtig. |