【发布时间】:2014-03-10 15:05:47
【问题描述】:
我有一个用 C# 维护的字典,其中有一个到类对象映射的字符串。
public class parent
{
public Dictionary<string, valueclass> clientToFileSystemMap {get;set;}
}
class valueclass
{
//some internal state
valueclass createclone()
{
create clone of this object and return
}
void update()
{
change state
}
}
现在可以有多个线程同时更新和克隆同一个对象。我想同步访问,以便克隆不会返回半更新的对象。
我发现的一种方法是在类 valueclass 中创建一个私有锁对象,并在该操作之前获取该锁。另一种选择是使用这里提到的[MethodImpl(MethodImplOptions.Synchronized)] - C# version of java's synchronized keyword?。
另一种选择可能是创建一个类似于类对象的对象字典并锁定它们。
最好的方法是什么?
【问题讨论】:
-
您能否发布更具体的代码(在您粘贴的代码中,没有您提到的字典)以获得更好的答案?
-
完成。虽然字典在这里并不重要。
标签: c# multithreading dictionary sync