Per esempio è il seguente thread-safe codice:Le operazioni di linq su raccolte simultanee thread safe?
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
}
});
}
}
Edit: A quanto pare il titolo non era abbastanza chiaro in modo aggiornato il codice di esempio per includere effettivo comportamento più threaded, sì, il codice di cui sopra è solo un campione di di comportamento multithread.
Dove si trova la discussione? – leppie
Si può avere questo in un'app di asp.net e più thread accederà senza che li si crei manualmente – pollirrata
Non c'è il multi-threading nel codice ma se ci si trova in un ambiente con multithreading ConcurrentQueue è sicuramente il tipo buono da utilizzare perché fornisce accesso sicuro alla tua coda .. – FloChanz