मुझे आश्चर्य है कि क्या लिंक एक्सटेंशन विधियां परमाणु हैं? या क्या मुझे किसी भी प्रकार के पुनरावृत्ति से पहले lock
किसी भी IEnumerable
ऑब्जेक्ट को धागे में इस्तेमाल किया जाना चाहिए?IENumerable लिंक विधियों थ्रेड-सुरक्षित हैं?
वैरिएबल को volatile
के रूप में घोषित करते हुए इस पर कोई असर पड़ता है?
समेकित करने के लिए, निम्न में से कौन सा सबसे अच्छा, थ्रेड सुरक्षित, ऑपरेशन है?
किसी भी ताले बिना 1-:
IEnumerable<T> _objs = //...
var foo = _objs.FirstOrDefault(t => // some condition
2- ताला बयानों सहित:
IEnumerable<T> _objs = //...
lock(_objs)
{
var foo = _objs.FirstOrDefault(t => // some condition
}
3- रूप में अस्थिर चर घोषणा:
volatile IEnumerable<T> _objs = //...
var foo = _objs.FirstOrDefault(t => // some condition
वे धागे सुरक्षित नहीं हैं। Http://stackoverflow.com/questions/9995266/how-to-create-a-thread-safe-generic-list देखें – stuartd