Semaphore

Semaphore sind globale Signalflags im System, mit denen sich gegenseitig ausschließende Ressourcen (Mutex-Ressourcen) festgelegt werden. Sie können sie dazu nutzen, bestimmte Prozesse warten zu lassen, bis andere abgeschlossen sind.

Verwenden Sie Vorgänge > Semaphore, um verwendete Semaphore für Vorgänge anzuzeigen. Sie können Semaphore auch löschen. Dies kann erforderlich sein, wenn ein blockierter oder abgebrochener Vorgang das entsprechende Semaphor nicht freigibt.

Die Anzeige "Semaphore" wird in der Anzeige "Vorgänge" verwendet.
Die Implementierung von Semaphoren erfolgt mit zwei Punktbefehlen: .semget und .semput. Mit dem Befehl .semget "holen Sie sich" eine Marke: Nachdem ein Schritt eine Marke abgerufen hat, müssen die anderen Schritte (in allen Projekten), die versuchen, dieselbe Marke abzurufen, warten, bis der Benutzer, der sie zuerst angefordert hat, sie freigibt.
Anmerkung: Ein Schritt, der einen .semget-Befehl enthält, wartet, bis das Semaphor freigegeben wird. Schlägt der Vorgang fehl und dessen Semaphor bleibt aktiv, muss das Semaphor manuell gelöscht werden, bevor ein Vorgang, der Semaphore verwendet, erneut ausgeführt werden kann.

Nehmen Sie beispielsweise an, dass Sie über ein Programm verfügen, das einen Druckertreiber erstellt, und dass dieses Programm stets nur von einem einzigen Prozess genutzt werden soll. Richten Sie in jedem Projekt, das das Programm aufruft, drei Schritte mit den folgenden Befehlszeilen ein:

Schritt

Befehlszeile

Semaphor abrufen

.semget $BF_PROJECTNAME_PHYS

Treiberersteller ausführen

printdrivermaker.exe windows

Semaphor freigeben

.semput $BF_PROJECTNAME_PHYS

Sie können Semaphore für zentrale Ressourcen in Ihrer Organisation erstellen, beispielsweise für einen stark ausgelasteten Server oder für ein Softwareprogramm mit einer Einzelbenutzerlizenz. Jeder Schritt, der die Ressource verwendet, die Sie schützen wollen, muss in die Befehle .semget und .semput eingeschlossen werden.

Semaphore unterliegen folgenden Regeln:


Feedback