[英]Read only Dictionary - multiple threads calling .ContainsKey method
我有一个静态只读字典。 不会对此词典进行任何修改。
我有多个线程使用.ContainsKey(Key)从这本字典中读取。 例如
class MyData
{
private static private IDictionary<int, string> _dictionary = new Dictionary<int, string>();
MyData()
{
// Load Dictionary here
}
public string GetValue(int key)
{
if (_dictionary.ContainsKey(key))
{
return _dictionary[key];
}
}
}
这样做有任何线程问题吗?
如果没有人改变它:这很好。 如果偶尔进行编辑,那么可以查看ReaderWriterLockSlim,或者(我的偏好)编辑快照/副本并交换引用。
如果你只是想读书,这是安全的。
如果在从多个线程读取之前所有的“添加”都已完成,那么就可以了。 仅仅因为它的readonly并不意味着它的线程安全 - 它不是。
也许您应该使用ReaderWriterLock
来同步访问
如果您要同时编写数据(并且使用的是.NET 4.0),则可以使用ConcurrentDictionary
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.