【发布时间】:2010-10-18 06:02:57
【问题描述】:
我正在阅读一本描述 SyncRoot 模式的 c# 书籍。它显示
void doThis()
{
lock(this){ ... }
}
void doThat()
{
lock(this){ ... }
}
并与 SyncRoot 模式进行比较:
object syncRoot = new object();
void doThis()
{
lock(syncRoot ){ ... }
}
void doThat()
{
lock(syncRoot){ ... }
}
但是,我不太明白这里的区别;似乎在这两种情况下,两种方法一次只能由一个线程访问。
这本书描述了...因为实例的对象也可以用于从外部同步访问并且你不能从类本身控制这个形式,你可以使用 SyncRoot 模式诶? '实例的对象'?
谁能告诉我上面两种方法的区别?
【问题讨论】:
-
在第二个例子中,syncRoot() 应该是 doThat() 吗?
-
"object of the instance" == "instance of the class" 措辞不佳的书。
-
感谢 Will Dean 的编辑。该死的复制/粘贴:)
标签: c# multithreading design-patterns concurrency