Emm*_*uel 1 c# dictionary thread-safety
阅读字典的msdn文档,它说:"这种类型的公共静态(在Visual Basic中共享)成员是线程安全的.任何实例成员都不能保证是线程安全的."
这意味着用这样的字典:
static object syncObject = new object();
static Dictionary<string,MyObject> mydictionary= new Dictionary<string, MyObject>();
Run Code Online (Sandbox Code Playgroud)
是否做了类似下面的代码不必要的事情?
lock (syncObject)
{
context = new TDataContext();
mydictionary.Add("key", myObject);
}
Run Code Online (Sandbox Code Playgroud)
它指的是类本身的静态方法.该语句实际上是添加到大多数类的样板文档.Dictionary <>类实际上不公开任何静态方法.
您必须使用lock关键字或者甚至是ReaderWriterLock自行序列化对您的字典类的访问.虽然线程是一个非常复杂的主题,但lock关键字并不总是合适的.Joe Duffy撰写了一本很棒的书" Windows上的Concurrent Programming ",它深入介绍了保护共享应用程序资源的方法.
| 归档时间: |
|
| 查看次数: |
4522 次 |
| 最近记录: |