Sind IEnumerable Linq-Methoden threadsicher?
Ich frage mich, ob Linq-Erweiterungsmethoden atomar sind. Oder muss ichlock
irgendeinIEnumerable
Objekt verwendet über Threads, vor einer Art von Iteration?
Deklariert die Variable alsvolatile
Haben Sie einen Einfluss darauf?
Zusammenfassend lässt sich sagen, welcher der folgenden Vorgänge ist der beste, thread-sichere Vorgang?
1- Ohne irgendwelche Schlösser:
IEnumerable<T> _objs = //...
var foo = _objs.FirstOrDefault(t => // some condition
2- Einschließlich Lock-Anweisungen:
IEnumerable<T> _objs = //...
lock(_objs)
{
var foo = _objs.FirstOrDefault(t => // some condition
}
3- Variable als flüchtig deklarieren:
volatile IEnumerable<T> _objs = //...
var foo = _objs.FirstOrDefault(t => // some condition