【发布时间】:2011-02-16 07:21:33
【问题描述】:
我想知道开发人员在何时(以及在何处)放置锁是否应遵循任何准则。
例如:我知道这样的代码应该被锁定,以避免另一个线程意外更改 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() 方法?
在构建多线程代码时,你们有什么需要牢记的准则吗?
【问题讨论】:
标签: c# multithreading locking