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