日期:2014-05-17  浏览次数:21145 次

关于 Lock 的问题

public void Function()
{
    System.Object lockThis = new System.Object();
    lock(lockThis)
    {
        // Access thread-sensitive resources.
    }
}

这个 lockThis 感觉是没有任何作用的。
另外,lock的变量 感觉不是要锁住要共享的变量。lock的变量感觉是作为一个 标志而存在。

------解决方案--------------------
这个写法没任何意义
------解决方案--------------------
不懂,去查了下也还没大看明白,求解
------解决方案--------------------
这个写法没有任何意义

lockThis弄成全局的,所有线程共用的才行
------解决方案--------------------
在类里定义 System.Object lockThis = new System.Object(); 
然后在function里写
lock(lockThis)     {         // Access thread-sensitive resources.     } 
因为不同的线程使用到同一个变量lockThis,所以是有效的。
你那种写法每个变量都是独立的,所以线程间没有同步关系。
------解决方案--------------------
你可以把要Lock的变量理解为钥匙。只有拿到了这把钥匙,才可以开启钥匙对应的箱子,而其他人需要等你归还了钥匙才能打开这个箱子。
------解决方案--------------------
你把那个锁的对象定义成全局变量好不好?你定义个局部变量没意义。。