如何根据特定的string-key执行lock?
public void PerformUpdate(string key)
{
    // TODO: Refine this, since they key-string won't 
    // be the same instance between calls
    lock(key)
    {
        PerformUpdateImpl()
    }
}我试着将锁对象保存在ConcurrentDictionary中,但不知何故这也不成立。
发布于 2012-11-09 20:13:57
虽然这不是并发的(您可以这样做),但是Dictionary<string,object>呢?
这不是可行的吗?
dict.Add("somekey",new object());
lock (dict["somekey"]) {
  ...
}这将允许线程锁定对象的命名实例,我认为这会做您想做的事情。
发布于 2012-11-09 20:13:53
我做类似事情的一种方法是创建一个Dictionary<string,object>,并使用它从字符串转到我锁定的对象。你可能需要确保这个字典是以threadsafe的方式被访问的(例如,围绕它的锁),如果你需要在不同的实例之间锁定,将它设为静态的,等等。
https://stackoverflow.com/questions/13307831
复制相似问题