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