Настоящий Флеймер
Зарегистрирован: 16 August 2006
Сообщения: 1510
Примеры кода: 0
|
Реентерабельность хандлеров |
05 December 2007 04:45 |
|
|
|
|
В хандлере есть такой параметр IsReusable. По умолчанию стоит False.
Соответственно я рассчитываю, что это хандлер строго последовательно будет выполняться - ну допустим на одной страничке 1000 вызовов одного хандлера. Я рассчитываю, что среда ASP2 понимает это параметр IsReusable и ведет очередь и выполнит все тысячу вызовов один за другим.
Однако в реальности среда ASP2 игнорирует этот параметр. Вот скрины. На них видно, что некий мой класс с именем ParmProtector (метод Unmask) - выполняется ровно в данном случае в два процесса - 5176 и 4120.
Соответственно многопоточный код - он ведь ИНАЧЕ пишется, чем однопоточный. Ну хотя бы LOCK там надо было бы ставить. Но этим свойством
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Propertyя рассчитываю, что код хандлера будет исполняться ОДНОПОТОЧНО. Чего, однако, не происходит.
Вторично сегодня убедился, что код хандлера выполняется многопоточно (независимо от IsReusable) - когда полез из хандлера ПИСАТЬ в базу и повесил ваще SQL.
Где грабли?
К сообщению приложен файл (см. оригинал).
Последний раз редактировалось 05 December 2007 04:44
|
|