सी #/.NET 4.0 का उपयोग करके, Lazy<T>
ऑब्जेक्ट निम्नानुसार घोषित किया जा सकता है।सिस्टम। आलसी <T> और सिस्टम। थ्रेडिंग। लाज़ी थ्रेडस्फीटीमोम गणना
using System;
using System.Threading;
...
var factory =() => { return new object(); };
var lazy = new Lazy<object>(factory, LazyThreadSafetyMode.ExecutionAndPublication);
LazyThreadSafetyMode
गणन से अन्य विकल्प PublicationOnly
और None
हैं।
कोई ExecutionOnly
विकल्प क्यों नहीं है?
इस मामले में व्यवहार यह होगा कि फैक्ट्री विधि को एक बार एक ही थ्रेड द्वारा बुलाया जाता है, भले ही एकाधिक धागे lazy.Value
प्राप्त करने का प्रयास करें। एक बार कारखाने की विधि पूरी हो जाने के बाद और एकल परिणाम कैश किया गया था, कई धागे आलसी तक पहुंचने में सक्षम होंगे। साथ ही वैल्यू (यानी, आरंभिक फैक्ट्री विधि के बाद कोई धागा सुरक्षा नहीं)।