Show TOC

Dokumentation zur VorgehensweiseSperren und Entsperren von Units über Queues Dieses Dokument in der Navigationsstruktur finden

 

Das Sperren und Entsperren von Units findet immer erst zum Zeitpunkt COMMIT WORK statt.

Vorgehensweise

Mit Hilfe der Klassen CL_QRFC_LOCK_INBOUND, CL_QRFC_LOCK_OUTBOUND und CL_QRFC_LOCK_NOSEND kann die Ausführung von Units über eine Queue-Sperre verhindert werden bzw. eine Queue-Sperre zurückgenommen werden.

Beispiel Beispiel

Die Abbildung wird im Begleittext erläutert.

Grafik: Lock-Methoden

Ende des Beispiels.

Ergebnis

  • Die Methode LOCK_QUEUE_FROM_TOP sperrt die erste Unit am Anfang der angegeben Queue für eine Destination. Damit ist es möglich, einen Queue nachträglich zu sperren. Wenn keine Unit vorhanden ist, wird automatisch eine leere Unit erzeugt, um die Sperre abzubilden.

  • Die Methode LOCK_QUEUE_FROM_CURRENT_POS sperrt die Ausführung der nächsten Unit, die in die angegebene Queue für eine Destination geschrieben wird. Damit ist es möglich, eine Queue präventiv zu Sperren. Es wird eine leere Unit erzeugt, um die Sperre abzubilden.

  • Alle Queue-Sperren werden erst beim nächsten COMMIT WORK aktiv. Sollten innerhalb einer Anwendungs-LUW sowohl Unit-Spperren als auch Queue-Sperren erzeugt werden, so werden immer zuerst die Queue-Sperren gesetzt und dann die Unit-Sperren den entsprechenden Queues zugeordnet. Dazu betrachte man das folgende Beispiel:

Beispiel Beispiel

Operation auf der Queue

Inhalt der Queue

Erzeugung der Unit 1

Erzeugung der Unit 2

COMMIT WORK

Unit 1 - Unit 2

Erzeugung der Unit 3

Setzen der Sperre A an die aktuelle Position

COMMIT WORK

Unit 1 - Unit 2 - Sperre A - Unit 3

Setzen der Sperre B an den Anfang

Verarbeitung der Unit 1 durch den Scheduler

Unit 2 - Sperre A - Unit 3

COMMIT WORK

Sperre B - Unit 2 - Sperre A - Unit 3

Ende des Beispiels.