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.