Concurrent collections in .NET
Since the first .NET Framework version, most of the collections in the System.Collections
namespace contained the Synchronized
factory method that creates a thread safe wrapper over the collection instance, which ensures thread safety:
var source = Enumerable.Range(1, 42000).ToList(); var destination = ArrayList.Synchronized(new List<int>()); Parallel.ForEach(source, n => { destination.Add(n); }); Assert.AreEqual(source.Count, destination.Count);
The synchronized collection wrapper can be used in a concurrent environment, but its efficiency is low, since it uses simple locking ensuring exclusive collection access for every operation. This approach is called coarse-grained locking and it is described in Chapter 3 ...
Get Mastering C# Concurrency now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.