उदाहरण के लिए निम्नलिखित कोड धागा सुरक्षित है:समवर्ती संग्रह धागे सुरक्षित पर linq संचालन सुरक्षित हैं?
ConcurrentQueue<Guid> _queue = new ConcurrentQueue<Guid>();
while(true)
{
for(int y = 0; y < 3; y++)
{
if(y % 3 == 0)
{
System.Threading.Tasks.Task.Run(() => _queue.Enqueue(Guid.NewGuid()));
}
else if (y % 3 == 1)
{
Guid x;
System.Threading.Tasks.Task.Run(() => _queue.TryDequeue(out x));
}
else if(y % 3 == 2)
{
System.Threading.Tasks.Task.Run(() =>
{
if (_queue.Any(t => t == testGuid))
{
// Do something
}
});
}
}
संपादित करें: जाहिर है शीर्षक काफी स्पष्ट तो कोड नमूना अद्यतन वास्तविक बहु पिरोया व्यवहार शामिल करने के लिए नहीं था, हाँ कोड ऊपर सिर्फ एक नमूना है बहुप्रचारित व्यवहार का।
धागा कहाँ है? – leppie
आपके पास यह एएसपीनेट ऐप में हो सकता है और एकाधिक थ्रेड इसे मैन्युअल रूप से बनाये बिना इसे एक्सेस करेंगे – pollirrata
आपके कोड में कोई बहु थ्रेडिंग नहीं है लेकिन यदि आप एक बहुप्रचारित वातावरण में हैं तो ConcurrentQueue निश्चित रूप से उपयोग करने के लिए एक अच्छा प्रकार है क्योंकि यह प्रदान करता है आपके कतार में सुरक्षित पहुंच। – FloChanz