powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Блокировка кэша
12 сообщений из 12, страница 1 из 1
Блокировка кэша
    #37909864
artemius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем,

в приложении используются объекты из кэша. Один объект используется несколькими пользователями. Если объекта в кэше нет, он сначала создается, потом кладется в кэш. При одновременном обращении пользователей возможна ситуация, когда в кэш кладутся несколько одних и тех же объектов, что не есть хорошо. Как можно заблокировать кэш, чтобы в него помещался только один объект от первого обращения к приложению? Можно ли использовать конструкцию вида

lock(Cache)
{
..
}

Спасибо!
...
Рейтинг: 0 / 0
Блокировка кэша
    #37909975
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть штатная блокировка Application без написания левого кода .

Код: c#
1.
2.
3.
Application.Lock(); 
Application["MyCode"] = ...; 
Application.UnLock(); 



А, вообще, за такую "архитектуру" по блокировке Application / Cache нужно веником по мягкому месту рядить.
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910120
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕсть штатная блокировка Application без написания левого кода .

Код: c#
1.
2.
3.
Application.Lock(); 
Application["MyCode"] = ...; 
Application.UnLock(); 




А, вообще, за такую "архитектуру" по блокировке Application / Cache нужно веником по мягкому месту рядить.

за такую точно =))

2ТС:
lock подойдёт, только нужно его правильно заиспользовать
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910132
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationза такую точно =))
А за какую не точно? )
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910157
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУpationза такую точно =))
А за какую не точно? )

Велосипедов изобретена тьма

но Application.Lock() - это жесть
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910165
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationВелосипедов изобретена тьма
но Application.Lock() - это жесть
Поверь, эти велосипеды не меньшая жесть.
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910175
artemius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть т.н. паттерн "Двойная блокировка", что вы скажете про него?

private static object ThisLock = new object();
...
object dataObject = Cache["globalData"];
if( dataObject == null )
{
lock( ThisLock )
{
dataObject = Cache["globalData"];

if( dataObject == null )
{
//Get Data from db
dataObject = GlobalObj.GetData();
Cache["globalData"] = dataObject;
}
}
}
return dataObject;
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910286
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artemius, это не двойная блокировка, это гумно на постном масле. Для double checked locking нужно использовать volatile.
Вот пример .
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910312
artemius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУartemius, это не двойная блокировка, это гумно на постном масле.

а в чем недостатки этого способа?
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910323
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artemiusа в чем недостатки этого способа?
Прочитай внимательно ссылку.
...
Рейтинг: 0 / 0
Блокировка кэша
    #37910383
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artemiusЗдравствуйте всем,

в приложении используются объекты из кэша. Один объект используется несколькими пользователями. Если объекта в кэше нет, он сначала создается, потом кладется в кэш. При одновременном обращении пользователей возможна ситуация, когда в кэш кладутся несколько одних и тех же объектов, что не есть хорошо. Как можно заблокировать кэш, чтобы в него помещался только один объект от первого обращения к приложению? Можно ли использовать конструкцию вида

lock(Cache)
{
..
}

Спасибо!

на один key

"когда в кэш кладутся несколько одних и тех же объектов" это как?
...
Рейтинг: 0 / 0
Блокировка кэша
    #37937416
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем, пришел к выводу, что асп.нетовский кеш не получится полноценно залочить. Не поможет даже двойная блокировка.
Вывод простой - обычный потокобезопасный статический синглтон спасет отца русской демократии. Но про кешёвые фишки типа таймера, коллбэков и иже с ними придется забыть. Ну или пытаться всё это засунуть в синглтон со всеми вытекающими.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Блокировка кэша
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]