Архифлеймер
Зарегистрирован: 04 October 2005
Сообщения: 3067
Примеры кода: 0
|
Реентерабельность хандлеров |
05 December 2007 10:58 |
|
|
|
|
vbnet2000:
В хандлере есть такой параметр 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.
Где грабли?
К сообщению приложен файл (см. оригинал).
IsReusable делает из хелдлера сингалтон.
И это ни как не сказывается на его поведение относительно потоков.
У вас VBNET как всегда, "слышу звон..."
----------------------------------------
Knowledge is P...O...w...E...R!
My site
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 05 December 2007 10:57
|
|