在.NET中使用密钥的独占锁

时间:2015-06-17 04:02:05

标签: c# .net multithreading locking

我在C#中使用了lock语句来专门执行一段代码。有没有办法根据密钥做同样的事情。

例如:

lock(object, key)
{
//code-here
}

我有一个方法,它有一些不是线程安全的代码,但只有在两个并行执行中密钥(字符串)碰巧相同时才会这样。有没有办法以某种方式在.NET中实现这一点?

如果存在某种方式,那么如果在并行执行中使用的密钥不同并且可以提高性能,我们就可以进行并行执行。

1 个答案:

答案 0 :(得分:3)

将锁定对象放入由密钥索引的字典中 - Dictionary<string, object>并按键抓取对象以锁定。

如果需要动态添加新的键/锁对象,请确保锁定字典访问,否则如果在构造之后只读取字典中的值,则不需要额外的锁定。