Is simply enumerating a .NET Dictionary from multiple threads safe?
No modification of the Dictionary takes place at all.
Is simply enumerating a .NET Dictionary from multiple threads safe?
No modification of the Dictionary takes place at all.
Yes, in that case enumeration is thread safe since at the beginning of a foreach
loop a new instance of the enumerator is created with an implicit call to GetEnumerator
.
Yes ... Well almost:
A Dictionary<(Of <(TKey, TValue>)>) can support multiple readers concurrently, as long as the collection is not modified. Even so, enumerating through a collection is intrinsically not a thread-safe procedure. In the rare case where an enumeration contends with write accesses, the collection must be locked during the entire enumeration. To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.
(ref)