在某些场景中,我对锁定的概念有点困惑。让我来解释一下,假设我有以下几点:C#多线程 - 锁定
private readonly MyClass myObj;
private void Go(object state)
{
// call an instance member of myObj, but does it need to be locked?
myObj.SomeMethod(state);
}
所以现在的问题是不MyObj中需要调用的someMethod时被锁定?它是只读的,但是由于多个线程可以调用myObj的实例方法SomeMethod以及不同的状态,这不会引起问题?
谢谢。
不是用'SomeMethod'来锁定更多的关注,它是后续资源去'去'? – Smudge202
@ Smudge202:这取决于 - 如果'MyClass'不声称是线程安全的,但包含'Go'的类确实,那么锁定应该在'Go'中。如果'MyClass.SomeMethod'是为了线程安全的(为了这个术语的适当含义......),那么'Go'不需要锁定。 –
够公平的。尽管如此,我仍然发现所有可怕的倒退,代表'SomeMethod'的'Go'方法中的资源被锁定,这并不是线程安全的。个人喜好我猜。我也非常喜欢非线程安全的方式,并尽可能地确保线程的公寓/独立实例。简单得多。 – Smudge202