之前一直以为,lock当进入递归时,递归里面执行到lock (objectSyn)时会等待外层释放,而外层lock又会等待函数调用结束才释放。
后来看了《C#2.0 本质论》才知道lock只会生效于多线程,对于单线程,自身已经是锁的所有者,并不会出现为了继续加锁等待原有锁释放
另外在多线程里,公共对象被一个线程加锁后另一线程仍可对其进行操作