Does my use of Dictionary require locking?
c#, dictionary, locking, multithreading
Solution
Yes, you need to use locking.
Dictionary is not thread safe for add operations. If you are on .NET 4 you may consider switching to ConcurrentDictionary. Otherwise you should create your own thread safe collection (such as this).
Consider using a ReaderWriterLockSlim for synchronizing access to your collection (in case you won't use ConcurrentDictionary).
Problem
Many threads have access to `summary`. Each thread will have an unique key for accessing the dictionary; ``` Dictionary<string, List<Result>> summary; ``` Do I need locking for following operations? - `summary[key] = new List<Result>()` - `summary[key].Add(new Result());` It seems that I don't need locking because each thread will access dictionary with different key, but won't the (1) be problematic because of adding concurrently new record to dictionary with other treads?