c# – 我对Dictionary的使用是否需要锁定?

许多线程都可以访问摘要.每个线程都有一个唯一的密钥用于访问字典;

Dictionary<string, List<Result>> summary;

我是否需要锁定以进行以下操作?

> summary [key] = new List< Result>()
> summary [key] .Add(new Result());

似乎我不需要锁定,因为每个线程将使用不同的密钥访问字典,但是由于将新记录同时添加到字典与其他步骤,因此(1)不会出现问题吗?

解决方法:

是的,你需要使用锁定.

字典对于添加操作不是线程安全的.
如果您使用的是.NET 4,则可以考虑切换到ConcurrentDictionary.否则,您应该创建自己的线程安全集合(例如this).

考虑使用ReaderWriterLockSlim同步对集合的访问(如果您不使用ConcurrentDictionary).

上一篇:MySQL(COUNT)是否在InnoDB中等待行锁?


下一篇:c# – 锁定winforms控件