【发布时间】:2009-04-28 06:21:24
【问题描述】:
最近我的一个朋友问我,他刚刚开始玩线程,使用辅助对象纯粹用于锁定或仅锁定您引用的对象之间有什么区别。我不得不承认我不知道,谁能告诉我?我将尝试用几个代码 sn-ps 进行演示:
第一种方法:
List<string> data = new List<string>();
object datalock = new object();
void main()
{
lock(datalock)
{
if (data.contains("SomeSearchString"))
{
//Do something with the data and then remove it
}
}
}
第二种方法:
List<string> data = new List<string>();
void main()
{
lock(data)
{
if (data.contains("SomeSearchString"))
{
//Do something with the data and then remove it
}
}
}
是否存在显着差异,或者这取决于个人编码风格?如果有显着差异,谁能解释它是什么?
我确实遇到了另一个问题 [Difference between lock(locker) and lock(variable_which_I_am_using)],其中的答案暗示这两者是等价的,但如果是这样的话,哪个最好用,为什么?
我在网上看到过很多例子,我倾向于使用第一种方法作为个人选择,但我想知道使用第二种方法有什么好处。
【问题讨论】: