Отличное время для использования именованной блокировки - это когда у вас есть «транзакция», в которой вы хотите убедиться, что все происходит за один раз, например, обновление нескольких таблиц в базе данных одновременно, или когда вы просто хотите убедиться, что два пользователя не обновляют одну и ту же запись базы данных одновременно или при чтении или записи в файл на сервере, который может иметь одновременно несколько пользователей, пытающихся получить к нему доступ.
Проще говоря, в любое время возникает ситуация, когда могут возникнуть проблемы, если два запроса попытались сделать одно и то же одновременно, а затем установить именованную блокировку вокруг него (или если это строго связано с областью сеанса, приложения или сервера). , затем используйте замок с ограничением по объему).
Бен Надель опубликовал запись в блоге, в которой говорилось:
"Как я понимаю, должны быть выполнены ДВА условия, чтобы
использование CFLock:
- Доступ к общему ресурсу осуществляется или обновляется.
- Должна существовать вероятность того, что состояние гонки приведет к отрицательному результату. "
Вы можете даже вкладывать теги CFLOCK, например, иметь именованную блокировку вокруг транзакции и блокировки на уровне сеанса или приложения, вложенные внутрь, но делайте это с осторожностью - если вы сделаете это неправильно, у вас может возникнуть «тупиковая» ситуация где ни один запрос не может выполнить заблокированный раздел страницы, и все запросы к заблокированному разделу страницы могут быть заблокированы до истечения времени ожидания. (Руководство ColdFusion описывает лучшие методы для вложенной блокировки.)