我想知道是否有开发人员应遵循的关于何时(和何处)放置锁的指南。
例如:我理解像这样的代码应该被锁定,以避免另一个线程意外更改 SomeHeapValue 的值的可能性。
class Foo
{
public SomeHeapObject myObject;
public void DoSummat(object inputValue_)
{
myObject.SomeHeapValue = inputValue_;
}
}
但是,我的问题是,锁定有多深?例如,如果我们有这样的代码:
class Foo
{
public SomeHeapObject myObject;
public void DoSummat(object inputValue_)
{
myObject.SomeHeapValue = GetSomeHeapValue();
}
}
我们应该锁定在 DoSummat(...) 方法中,还是应该锁定在 GetSomeHeapValue() 方法中?
在构建多线程代码时,你们是否都牢记任何准则?
最佳答案
我找到的关于锁定和线程的最佳指南是这个页面(这是我在使用锁定和线程时引用的文本):
http://www.albahari.com/threading/
你想要“锁定和线程安全”这一段,但也请阅读其余部分,它写得非常好。
关于c# - 何时使用锁定的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779703/