Warm tip: This article is reproduced from serverfault.com, please click

c#-何时使用锁定的准则

(c# - Guidelines of when to use locking)

发布于 2010-05-06 08:48:15

我想知道开发人员在何时(以及在何处)放置锁时应遵循哪些准则。

例如:我知道应该锁定诸如此类的代码,以避免另一个线程意外更改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()方法?

构造多线程代码时,你是否要牢记所有准则?

Questioner
miguel
Viewed
0
2,618 2020-12-11 16:00:57

我找到的关于锁定和线程的最佳指南是此页面(这是我在使用锁定和线程时参考的文本):

http://www.albahari.com/threading/

你需要“锁定和线程安全”这一段,但也请阅读其余内容,它的文字写得非常好。