.NET 中使用密钥的独占锁

Bri*_*rij 4 .net c# multithreading locking

我在C#中使用了lock语句来独占执行一段代码。有没有办法根据密钥执行相同的操作。

例如:

lock(object, key)
{
//code-here
}
Run Code Online (Sandbox Code Playgroud)

我有一个方法,其中的一些代码不是线程安全的,但前提是键(字符串)在两个并行执行中恰好相同。有没有办法在 .NET 中以某种方式实现这一点?

如果有办法的话,如果并行执行中使用的密钥不同并且可以提高性能,那么我们可以进行并行执行。

Ale*_*kov 6

将锁对象放入由键索引的字典中 -Dictionary<string, object>并通过键抓取对象来锁定。

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

  • 关于第二段,如果有必要,您可以使用“ConcurrentDictionary”。 (5认同)