Coldfusion: Lese- und Schreibzugriffe auf gemeinsame Variablen sperren

Es gibt Scope-Locks und Name-Locks. Scope-Lock heißt, dass ein Lock einen ganzen Variablenbereich betrifft. Es ist außerordentlich wichtig, dies zu wissen, wenn man mit Exclusive-Locks arbeitet. Wenn man zum Beispiel einen Exclusive-Session-Scope-Lock setzt, heißt das, dass der Code für alle Threads desselben Benutzers gesperrt ist. Scope-Locks für den Session-Scope sind akzeptabel, weil sie nur einen einfädigen Zugang eines einzigen Benutzers zulassen.

Man kann auch Scope-Locks für die Application- und Server-Scopes erzeugen, doch muss dringend davor gewarnt werden. Einen Application-Scope-Lock setzen bedeutet, dass alle Threads für die gesamte Applikation von der Sperre betroffen sind. Noch schlimmer ist es beim Server-Scope-Lock, der bedeutet, dass alle Threads für den gesamten Server betroffen sind. Das kann zu ausgeprägten Flaschenhälsen führen, weil alle Threads darauf warten, dass Exclusive-Locks aufgehoben werden.

Für Application- und Server-Scope-Locks ist ein Name-Lock besser geeignet. Im Bespiel mit dem Zähler oben wurde ein Exclusive-Name-Lock verwendet. Das ist viel besser als ein Scope-Lock, weil er immer nur einem Thread Zugang zu einem Name-Lock gibt. So wird nicht der Zugang zur gesamten Applikation oder zum ganzen Server einfädig, sondern nur für Lese- und Schreibzugriffe für den Codebereich, der sich innerhalb eines Name-Locks befindet. Die Faustregel ist also, Session-Scope-Locks für Session-Variablen und Name-Locks für Applikations- und Servervariablen zu verwenden. Locks für den Application- und Server-Scope sollten jedoch mit Vorsicht verwendet werden.

Themenseiten: Anwendungsentwicklung, Software, Webentwicklung

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Coldfusion: Lese- und Schreibzugriffe auf gemeinsame Variablen sperren

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *