OBS/Adminhilfe/Semaphoren: Unterschied zwischen den Versionen
Nimz (Diskussion | Beiträge) |
Nimz (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 31: | Zeile 31: | ||
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. | 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= | =DB-Semaphoren= | ||
==Unit== | |||
Base.DB | |||
==Methoden und Funktionsweise== | |||
DB-Sqmaphoren werden in der per Parameter mitgeteilen Datenbank-Session angelegt. Für den Zugriff gibt es die Methoden DB_LockSemaphore (Anlage), DB_UnLockSemaphore(Löschen) und DB_IsSemaphore (Prüfung). | |||
{{Achtung|Bei MySQL konnten wir schon feststellen, dass die angelegten DB_Semaphoren global für alle Sessions gelten, die von einem MySQL-Dienst verwaltet werden. Alle anderen Sessions sind dann nicht in der Lage eine DB-Semaphore mit gleichem Namen anzulegen. OBS-ergänzt den Datenbanknamen daher automatisch. Die maximale Länge für den Semaphoren-Namen ist 64. Es ist daher rauf zu achten den Namen der Semaphore möglichst kurz zu halten, damit der Datenbankname noch ergänzt werden kann.}} | |||
=NeuNum-Semaphoren= | |||
==Unit== | |||
G_LockNeuNum | |||
==Methoden und Funktionsweise== | |||
Bei diesen Locks handelt es sich um [[#DB-Semaphoren|DB-Semaphoren]]. | |||
Aktuelle Version vom 31. August 2018, 09:53 Uhr
Dies ist eine zugriffsgeschützte Seite.
- System Überwachung
- DEP deaktivieren
- Darstellung unter Windows 7
- Einwahl auf Windows 2000 Server
- Preislisten
- Datenbank Sicherung
- Customize
- Zentrale
- Support Macro
- Service Debug
- Historienprotokoll (Datenänderung OBS)
- Fernwartungsprobleme
- Startparameter
- Fehler beim Kassenabschluss
- Diverse Informationen
- A ras.pbk
- B Command Line Interpreter
- C File Zilla Benutzer XML erzeugen
- D1 OBS_UPDATE.EXE zum OBS Update Server hochladen
- D2 SUPPORT_MACRO zum OBS Update Server hochladen
- H1 Remote Service Protokoll-Übersicht (Alles)
- H Remote ServiceProtokoll-Übersicht
- I Remote Service Commands
- I1 (Admin) Globaler Hinweis für Updates
- J Liste der OBS Updates
- K Angemeldete Service Firmen
- L Systeminformationen einlesen
- M Kundendaten anzeigen
- M1 Kundendatenbankinformationen anzeigen
- N Kundendaten einlesen
- O Kunden-Update Informationen anzeigen
- P Modul Registrierung OBS
- Q App Verwaltung
- S1 Firmen Statistik Protokolle OBS
- S2 Statistik Notfallkassen
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;
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
Unit
Base.DB
Methoden und Funktionsweise
DB-Sqmaphoren werden in der per Parameter mitgeteilen Datenbank-Session angelegt. Für den Zugriff gibt es die Methoden DB_LockSemaphore (Anlage), DB_UnLockSemaphore(Löschen) und DB_IsSemaphore (Prüfung).
NeuNum-Semaphoren
Unit
G_LockNeuNum
Methoden und Funktionsweise
Bei diesen Locks handelt es sich um DB-Semaphoren.