OBS/Adminhilfe/Semaphoren: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
Für diese Seite wurde eine Zugriffsbeschränkung eingerichtet. Falls du diese Nachricht siehst, bist du nicht berechtigt, diese Seite einzusehen.
(Die Seite wurde neu angelegt: „{{ZugriffOBS}} =Datei-Semaphoren= ==Unit== lib_Semaphore ==Methoden und Funktionsweise== Die Unit enthält eine Klasse zum Verwalten von Datei-Semaphoren, dazu…“)
Zeile 4: Zeile 4:
lib_Semaphore
lib_Semaphore
==Methoden und Funktionsweise==
==Methoden und Funktionsweise==
Die Unit enthält eine Klasse zum Verwalten von Datei-Semaphoren, dazu eine globale Variable der Klasse und globale Funktionen für den Zugriff auf Semaphoren in der Klasse. Die globale Variable heißt '''GL_Semaphore''' und wird per '''initialization''' beim Programmstart instanziiert. Um eine Semaphore anzulegen, kann die Klasse selbst verwendet werden. Die globalen Funktionen unterstützen die Anlage mehrerer Semaphoren auf einmal. Bei Übergabe mehrerer Semaphoren sind diese mit Komma, Zeilenumbruch (CRLF), Semikolon oder Pipe zu trennen.
Die Unit enthält eine Klasse zum Verwalten von Datei-Semaphoren, dazu eine globale Variable der Klasse und globale Funktionen für den Zugriff auf Semaphoren in der Klasse. Die globale Variable heißt '''GL_Semaphore''' und wird per '''initialization''' beim Programmstart instanziiert. Um eine Semaphore anzulegen, kann die Instanz selbst verwendet werden. Die globalen Funktionen unterstützen die Anlage mehrerer Semaphoren auf einmal. Bei Übergabe mehrerer Semaphoren sind diese mit Komma, Zeilenumbruch (CRLF), Semikolon oder Pipe zu trennen. Alle Semaphoren werden in der Instanz angelegt. Beim schließen des Programms werden automatisch alle noch enthaltenen Semaphoren freigegeben.
 
==Beispiele==
==Beispiele==
===Einfaches Lock in einer Methode===
===Einfaches Lock in einer Methode===

Version vom 31. August 2018, 09:38 Uhr

Dies ist eine zugriffsgeschützte Seite.


Admin-Hilfe

OBS-Administration / Installation
kundenspezifische Anpassungen
OBS Protokolle
Shop-Administration

Datei-Semaphoren

Unit

lib_Semaphore

Methoden und Funktionsweise

Die Unit enthält eine Klasse zum Verwalten von Datei-Semaphoren, dazu eine globale Variable der Klasse und globale Funktionen für den Zugriff auf Semaphoren in der Klasse. Die globale Variable heißt GL_Semaphore und wird per initialization beim Programmstart instanziiert. Um eine Semaphore anzulegen, kann die Instanz selbst verwendet werden. Die globalen Funktionen unterstützen die Anlage mehrerer Semaphoren auf einmal. Bei Übergabe mehrerer Semaphoren sind diese mit Komma, Zeilenumbruch (CRLF), Semikolon oder Pipe zu trennen. Alle Semaphoren werden in der Instanz angelegt. Beim schließen des Programms werden automatisch alle noch enthaltenen Semaphoren freigegeben.

Beispiele

Einfaches Lock in einer Methode

if (SEMA_New('MyLock')) then begin //Versucht eine Semaphore anzulegen; Datei: MyLock.Lock
    ...
    SEMA_Release('MyLock'); //Löschen der angelegten Semaphore
end;
ACHTUNG: Es ist darauf zu achten, dass die Methode SEMA_Release innerhalb der Bedingung aufgerufen wird!

Anlage Lock und Freigabe an anderer Stelle

var cSema : string='';

...

if (SEMA_New('MyLock',cSema)) then begin //Versucht eine Semaphore anzulegen; Datei: MyLock.Lock
    ...
end;

...

SEMA_Release(cSema); //Löschen der angelegten Semaphore

Werden Semaphoren benötigt, um z. B. den Zugriff auf bestimmte Listen oder Masken zu sperren, so muss im Create oder Init die Semaphore angelegt werden. Die Semaphore darf aber erst beim Schließen des Fensters wieder freigegeben werden. Um sich zu merken, welche Semaphore(n) am Ende freigegeben werden können, gibt es die Funktion SEMA_New auch mit einem Rückgabewert wurde die angelegten Semaphoren.

DB-Semaphoren