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?
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).