Здравствуйте, okon, Вы писали:
O>А для каких целей нужен "объект блокировки для определенного ключа" ? O>У вас по ключу лежит некий объект , почему бы не дать данным объектам необходимую реализацию, например можно сделать как базовый класc, который будет хранить SyncRoot, или интерфейс в котором будет свойство дающее SyncRoot.
Это архитектурная ошибка особенность кода, обусловленная наличием зависимости одного кэша объектов от другого. Как следствие, выделение ресурсов происходит в GetOrAdd. Приходится захватывать блокировку до, а не после.
Re: Неблокирующая коллекция локов с функцией самоочистки
Здравствуйте, LWhisper, Вы писали:
LW>Как следствие, выделение ресурсов происходит в GetOrAdd.
А если захват ресурсов выполнять уже после вызова GetOrAdd?
В функции-фабрике создавать легкие непроинициализированные объекты, а в переопределенной версии GetOrAdd запускать полную инициализацию перед тем, как вернуть объект наружу.
Lazy load в явном виде и с детерминированной инициализацией.
Здравствуйте, LWhisper, Вы писали:
TK>>Так вызовите Dispose — в чем проблема? TK>>Очевидно, что если GetOrAdd вернула не то, что было создано (или не создано) в переданной функции то, для предыдущего объекта надо вызвать Dispose() LW>Гениально! А как?
Как частное решение — годится. Как общее — нет.
Не подходит для структур. Не подходит для ситуаций, когда вызов фабрики должен быть один или он достаточно требовательный ресурсам, чтобы дополнительные вызове были нежелательны.
Но в целом — да, имеет право на жизнь.
Re[7]: Неблокирующая коллекция локов с функцией самоочистки
Здравствуйте, LWhisper, Вы писали:
LW>Как частное решение — годится. Как общее — нет. LW>Не подходит для структур. Не подходит для ситуаций, когда вызов фабрики должен быть один или он достаточно требовательный ресурсам, чтобы дополнительные вызове были нежелательны. LW>Но в целом — да, имеет право на жизнь.
Disposable структура? Да вы просто красавцы! Тут что либо ещё советовать — только портить
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[8]: Неблокирующая коллекция локов с функцией самоочистки
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, LWhisper, Вы писали:
LW>>Как частное решение — годится. Как общее — нет. LW>>Не подходит для структур. Не подходит для ситуаций, когда вызов фабрики должен быть один или он достаточно требовательный ресурсам, чтобы дополнительные вызове были нежелательны. LW>>Но в целом — да, имеет право на жизнь.
TK>Disposable структура? Да вы просто красавцы! Тут что либо ещё советовать — только портить
Какая часть "общего" нуждается в пояснении?
Нет, "мы" пока ещё не красавцы. Но есть к чему стремиться, а я верю в людей.