निम्नलिखित दो स्निपेट में, पहला सुरक्षित है या आपको दूसरा काम करना चाहिए?
सुरक्षित रूप से मेरा मतलब है कि प्रत्येक थ्रेड को उसी लूप चलना से विधि को कॉल करने की गारंटी है जिसमें धागा बनाया गया था?
या क्या आपको लूप के प्रत्येक पुनरावृत्ति के लिए एक नए चर "स्थानीय" के संदर्भ को कॉपी करना चाहिए?
var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{
Thread thread = new Thread(() => f.DoSomething());
threads.Add(thread);
thread.Start();
}
-
var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{
Foo f2 = f;
Thread thread = new Thread(() => f2.DoSomething());
threads.Add(thread);
thread.Start();
}
अपडेट: जैसा कि जॉन स्कीट के जवाब में बताया गया है, इसका विशेष रूप से थ्रेडिंग से कोई लेना-देना नहीं है।