Uma*_*air 1 c# multithreading locking
在某些情况下,我对锁定的概念感到有点困惑.让我解释一下,假设我有以下内容:
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);
}
Run Code Online (Sandbox Code Playgroud)
所以问题是在调用SomeMethod时是否需要锁定myObj?它是只读的,但是由于多个线程可以调用具有不同状态的myObj的实例方法SomeMethod,这不会导致问题吗?
谢谢.
该变量是只读的,但该对象可能是可变的或不可变的 - 甚至这并不能真正告诉您它是否可以安全地从多个线程中使用.
换句话说,它取决于实现MyClass,以及您是否希望Go从引用同一MyClass实例的多个线程调用.(这些天我倾向于编写类不是线程安全的,但通常每个线程都有自己的一组对象可供使用 - 所以我可能有一个包含Go的实例,以及一个实例MyClass,但知道其他线程不应该使用相同的实例.)
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |