Маловероятно, что блокировка объекта ASP Application
приведет к взаимоблокировке, которая длится дольше, чем время ожидания сценария сервера.
Классический объект ASP Application
имеет функции блокировки и разблокировки для синхронизации изменений объектов приложения. У вас может быть несколько запросов, пытающихся внести изменения в одно и то же значение - без блокировки, внесение изменения и последующая разблокировка изменения могут быть потеряны.
В качестве простого примера можно привести счетчик некоторых типов. Допустим, ваш код делает:
<%
Application("Count") = Application("Count") + 1
%>
Если у вас есть два одновременных запроса (req1 и req2), вы можете «потерять» попадание на страницу - фактически «пропущенное обновление».
Вы можете предотвратить это, заблокировав переменную Application
перед ее обновлением и разблокировав ее после обновления:
<%
Application.Lock
Application("Count") = Application("Count") + 1
Application.Unlock
%>
Если Application
заблокирован, когда другой поток запросов пытается получить к нему доступ, поток будет блокироваться до тех пор, пока не будет снята блокировка или не истечет время ожидания сценария.
Если вы забудете разблокировать блокировку, она будет снята автоматически после обработки страницы или после превышения времени ожидания сценария.
Для получения дополнительной информации см. MSDN .