Есть ли способ, вместо того, чтобы блокировать объект, показать его временную копию тому, кто обращается к нему?Наличие копии объекта вместо заблокированного
ответ
Оберните код, который использует этот объект, который в вашем случае является критическим ресурсом, с TransactionScope и установите значение IsolationLevel для моментального снимка.
Таким образом, каждый, кто пытается получить доступ к одному и тому же объекту, должен увидеть значение перед редактированием объекта, пока транзакция не будет завершена.
Вы можете избежать временных копий, если используете модификатор volatile.
Система всегда считывает текущее значение изменчивого объекта в запрашиваемой точке, даже если предыдущая команда запрашивала значение от одного и того же объекта. Кроме того, значение объекта записывается сразу при назначении. Модификатор volatile обычно используется для поля, к которому обращаются несколько потоков, без использования оператора блокировки для сериализации доступа. Использование изменчивого модификатора гарантирует, что один поток извлекает самое современное значение, написанное другим потоком.
- 1. Проверка на BOOL проверяет наличие объекта вместо
- 2. Выполнение копии объекта Динамически?
- 3. FileStream move вместо копии
- 4. Наличие объекта класса как члена вместо наследования класса
- 5. Как можно назначить Java для указания объекта вместо создания копии?
- 6. Проверьте наличие экземпляра объекта
- 7. Создание глубокой копии объекта
- 8. Сохранение копии текущего объекта
- 9. Swift: Возвращение копии объекта
- 10. Передача копии объекта методу
- 11. Получение копии объекта
- 12. Создание копии объекта
- 13. Создание защитной копии объекта JPA
- 14. Значение объекта копии javascript из объекта «schema»
- 15. Проверьте наличие пустых переменных объекта
- 16. RequireJS способ создания копии объекта
- 17. C++: Создание локальной копии объекта
- 18. C++/CLI - Создание копии объекта
- 19. Создание копии объекта в C++
- 20. Fluent NHibernate копии дочернего объекта
- 21. Проверка только на наличие рабочей копии git за ее удаленным
- 22. Странное поведение при смене исключительно заблокированного объекта - Monitor.Enter (x)
- 23. Bigcartel - наличие в качестве номера вместо бара?
- 24. Вход перенаправления после заблокированного содержимого
- 25. Python dict.fromkeys() генерирует копии списка() вместо нового
- 26. Возвращение ссылки const на объект вместо копии
- 27. Как сохранить изображение вместо создания копии?
- 28. Почему перераспределение векторной копии вместо перемещения элементов?
- 29. Когда требуется мелкая копия (вместо глубокой копии)?
- 30. Получение копии вместо ссылки из std :: tuple
Не на том внутреннем уровне _I думаю, о чем вы спрашиваете. Я понимаю вашу потребность и считаю, что современный функциональный язык (возможно, Clojure) может предложить такие современные и в то же время методологии потребления памяти на очень внутреннем уровне. Я предлагаю вам написать себе созвездие неизменных объектов и создать для них всевозможные конструкторы вариаций, и это может быть так. Но вам придется писать их. .NET не предлагает готовое решение для такого желания ... –