许多线程都可以访问摘要.每个线程都有一个唯一的密钥用于访问字典;
Dictionary<string, List<Result>> summary;
我是否需要锁定以进行以下操作?
> summary [key] = new List< Result>()
> summary [key] .Add(new Result());
似乎我不需要锁定,因为每个线程将使用不同的密钥访问字典,但是由于将新记录同时添加到字典与其他步骤,因此(1)不会出现问题吗?
解决方法:
是的,你需要使用锁定.
字典对于添加操作不是线程安全的.
如果您使用的是.NET 4,则可以考虑切换到ConcurrentDictionary.否则,您应该创建自己的线程安全集合(例如this).
考虑使用ReaderWriterLockSlim同步对集合的访问(如果您不使用ConcurrentDictionary).