Powinieneś używać podczas czytania i pisania rzeczy, które mogą ulec zmianie w zakresie aplikacji. Na przykład:
<cfquery name="application.myData">
select * from myTable
</cfquery>
Będziesz chciał zablokować to za pomocą type = "exclusive". Wszędzie tam, gdzie używana jest application.myData, potrzebujesz blokady typu = "readonly". Wyjątkiem jest metoda OnApplicationStart Application.cfc, która blokuje się. Podobnie zastosuj tę samą strategię z zakresami sesji i serwera.
Wymienione zamki zapewniają większą kontrolę nad strategią blokowania. Użyj nazwanego cflock, gdy chcesz dynamicznie blokować polecenia. Na przykład:
<cflock name="write_file_#session.user_type#" type="exclusive">
<cffile action="write" name="file_#session.user_type#" output="#content#" />
</cflock>
W tym przykładzie, użytkownicy różnych typów mogą zapisać plik w tym samym czasie, ale użytkownicy z tego samego session.user_type musi czekać na siebie. To cflock pomaga uniknąć problemów z rywalizacją plików.
Innym powodem użycia nazwanej blokady jest brak znajomości zakresu bieżącej operacji. Jeśli jesteś w instancji cfc, skąd wiesz, do jakiego zakresu został utworzony instancja? Zmienne? Sesja? Podanie? Dobra enkapsulacja uczy nas, że przedmioty nie wiedzą nic poza tym, co im powiedziano. Wewnątrz CFC użyj nazwanego zamka i nadaj mu nazwę po CFC lub CFC i unikalnej zmiennej instancji w zależności od przypadku użycia.
Może chcesz być ostrożny wyłączny zakres szerokiego blokowania - może szybko stać się wąskim gardłem wydajności. – modius