मेरा प्रश्न थोड़ा सैद्धांतिक है कि मैं जानना चाहता हूं कि List<object>
थ्रेड-सुरक्षित है अगर मैंने Parallel.For
इस तरह से उपयोग किया था। कृपया नीचे देखें:सी # समांतर लूप स्थानीय चर धागा सुरक्षित जानकारी
public static List<uint> AllPrimesParallelAggregated(uint from, uint to)
{
List<uint> result = new List<uint>();
Parallel.For((int)from, (int)to,
() => new List<uint>(), // Local state initializer
(i, pls, local) => // Loop body
{
if (IsPrime((uint)i))
{
local.Add((uint)i);
}
return local;
},
local => // Local to global state combiner
{
lock (result)
{
result.AddRange(local);
}
});
return result;
}
local
सूची थ्रेड सुरक्षित है? क्या मेरे पास result
सूची में सही डेटा है, बिना डेटा के बिना कई धागे के कारण डेटा बदल रहा है क्योंकि मेरे पास सामान्य लूप है?
नोट: मुझे सूची आदेश के बारे में चिंता नहीं है। मैं सूची और डेटा की लंबाई के बारे में जानना चाहता हूं।
'सूची' समानांतर धागा सुरक्षित नहीं है, विशेष रूप से आप कैसे इरादा रखते हैं। –
तो, इसका मतलब है कि मेरी 'परिणाम' सूची में वही डेटा नहीं होगा जैसा कि मैं सामान्य पाश से प्राप्त कर सकता हूं? – Saadi
इसका मतलब है ..... 'सूची' धागा सुरक्षित नहीं है !! –