最佳答案
我正在读一本描述 SyncRoot 模式的 c # 书
void doThis()
{
lock(this){ ... }
}
void doThat()
{
lock(this){ ... }
}
并与 SyncRoot 模式进行比较:
object syncRoot = new object();
void doThis()
{
lock(syncRoot ){ ... }
}
void doThat()
{
lock(syncRoot){ ... }
}
然而,我并不真正理解这里的区别; 似乎在这两种情况下,两个方法一次只能被一个线程访问。
这本书描述了 ... 因为实例的对象也可以用于从外部进行同步访问,而且您不能控制类本身的这种形式,所以您可以使用 SyncRoot 模式呃? “实例的对象”?
有人能告诉我上面两种方法的区别吗?