4D v16.3Über Semaphoren |
||
|
4D v16.3
Über Semaphoren
Über Semaphoren
In einem Computerprogramm ist eine Semaphore ein Tool zum Schutz von Aktionen, die nur von einem Prozess oder einem Benutzer zur selben Zeit ausgeführt werden dürfen. In 4D sind Semaphoren beispielsweise beim Ändern eines Interprozess Arrays notwendig: Ändert ein Prozess die Werte des Array, darf kein anderer Prozess die Möglichkeit haben, zum gleichen Zeitpunkt dasselbe zu tun. Der Entwickler verwendet eine Semaphore, um einem Prozess anzuzeigen, dass er die Operationen nur ausführen kann, wenn kein anderer Prozess gerade dieselben Aktionen ausführt. Stößt ein Prozess auf eine Semaphore, gibt es drei Möglichkeiten:
Die Semaphore schützt also Teile des Code. Sie erlaubt nur einen Prozess zur selben Zeit und blockiert den Zugriff, bis der aktuell berechtigte Prozess seinen Vorrang durch Freigabe der Semaphore beendet. In 4D setzen Sie eine Semaphore durch Aufrufen der Funktion Semaphore. Um sie wieder freizugeben, rufen Sie den Befehl CLEAR SEMAPHORE auf. Die Funktion Semaphore hat ein sehr spezielles Verhalten, da sie zwei Aktionen gleichzeitig durchführt:
Diese Doppelaktion derselben Funktion stellt sicher, dass zwischen Testen und Zuweisen der Semaphore keine externe Operation eingefügt werden kann. Über die Funktion Test semaphore können Sie herausfinden, ob eine Semaphore bereits zugewiesen ist oder nicht. Sie wird hauptsächlich als Teil von langen Operationen verwendet, wie z.B. beim Jahresabschluss in der Buchhaltung. Hier steuert Test semaphore die Oberfläche und verhindert den Zugriff zu bestimmten Operationen, wie z.B. Rechnungsdaten hinzufügen. Für Semaphoren gelten folgende Prinzipien:
Hier ein typischer Code für eine Semaphore: While(Semaphore("MySemaphore";300)) Eine nicht aufgelöste Semaphore kann Teile der Anwendung blockieren. Dieses Risiko lässt sich ausschließen, wenn Sie Semaphoren in derselben Methode setzen und auflösen. Minimieren von Code, der durch eine Semaphore geschützt ist, erhöht die Durchlässigkeit der Anwendung und verhindert, dass die Semaphore wie ein Flaschenhals wirkt. Zu guter Letzt optimiert der optionale Parameter tickCount der Funktion Semaphore das Abwarten bis zur Freigabe der Semaphore. Mit diesem Parameter funktioniert der Befehl wie folgt:
Die Funktion zieht auch Anfragen durch Einrichten einer Schleife vor. Auf diese Weise erhält der erste Prozess, der eine Semaphore abfragt, auch als erster eine. Beachten Sie, dass die Wartezeit gemäß den Eigenheiten der Anwendung gesetzt wird. Es gibt zwei Arten von Semaphoren:
Globale und lokale Semaphoren funktionieren nach derselben Logik. Der Unterschied liegt in ihrer Reichweite. Im Client/Server Modus werden globale Semaphoren von allen Prozessen auf allen Clients und Servern gemeinsam genutzt. Eine lokale Semaphore wird nur von Prozessen auf dem Rechner genutzt, wo sie erzeugt wurde. Hinweis: Wir empfehlen, zum Verwalten lokaler Aspekte für den Client einer Anwendung, wie z.B. die Oberfläche oder ein Array mit Interprozessvariablen, lokale Semaphoren zu verwenden. Verwenden Sie dafür globale Semaphoren, verursacht das nicht nur unnötigen Austausch über das Netzwerk, sondern kann auch andere Client-Rechner beeinträchtigen. Über eine lokale Semaphore können Sie solche unerwünschten Nebenwirkungen vermeiden.
Siehe auch
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v16) |