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

c# lock语句的疑问
大家好,c#入门经典及高级编程书中,在lock语句使用的章节中有这句话:在一个地方使用lock语句并不意味着,访问对象的其他线程都正在等待。必须对每个访问共享状态的线程显式地使用同步功能。
又有另一句:lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。

一句说其他线程会一直等待(被阻止),一句说不意味着其他线程都在等待,到底哪句才是正确的?还是怎样理解这两句话?

------解决方案--------------------
要看lock的对象,要求lock的对象是全局的object,那样可以阻止其他线程,如果只是lock自己内部的一个变量,甚至lock(this),那对于另I个new出来的实力,lock是不起作用的
------解决方案--------------------
你看字面意思就知道了,如果你lock的一个进程那其他的进程不访问这个lock的进程它会等待么?