Написать потокобезопасное свойство (в данном случае get метод) с отложенной инициализацией - C#
Формулировка задачи:
Хочется написать потокобезопасное свойство (в данном случае get метод) с отложенной инициализацией. Первой идей было
вторым возможным вариантом стало использование Lazy<>, который, как подсказал msdn, потокобезопасен. Вопрос - можно ли в многопоточном приложении для достижения схожей логики смело использовать Lazy<>.
И будет ли в данном случае хоть какая-то разница между двумя вариантами?
get { lock (locker) { if (item = null) { item = CalculateSomeData(); } } return item; }
item = new Lazy<object>(...)
Решение задачи: «Написать потокобезопасное свойство (в данном случае get метод) с отложенной инициализацией»
textual
Листинг программы
Lazy<MyObj> item = new Lazy<MyObj>(CalculateSomeData); public MyObj Item { get { return item.Value; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д