【发布时间】:2012-08-11 11:42:09
【问题描述】:
我有一个项目和一个类库。
我需要类库来更新存储项。在我的项目中,我需要访问这些存储项目。我可以在来自不同项目的同一个实例上使用lock 吗?这样可以吗?
【问题讨论】:
标签: c# multithreading locking
我有一个项目和一个类库。
我需要类库来更新存储项。在我的项目中,我需要访问这些存储项目。我可以在来自不同项目的同一个实例上使用lock 吗?这样可以吗?
【问题讨论】:
标签: c# multithreading locking
只要您锁定的是真正相同的对象,那绝对可以正常工作。如果您使用不同的 AppDomain,事情会变得更加复杂,但如果只是(比如说)项目 A 和项目 B 都锁定了一个最初来自项目 C 的对象,那应该不是问题。
至少,它会在技术上工作。就我个人而言,我通常更喜欢尽可能保持锁的私密性——例如,我不会锁定this 或从其他地方获得的引用,而是经常创建一个唯一目的是锁定的对象:
public class Foo
{
private readonly object mutex = new object();
...
}
这样我就知道唯一 可以获取该锁的代码是Foo 中的代码。它使锁更容易推理。
【讨论】: