锁定.Net - 是锁定参考还是对象?

yto*_*ano 7 .net c# multithreading locking

假设我有这段代码:

object o1 = new Object();
object o2 = o1;
Run Code Online (Sandbox Code Playgroud)

获取o1锁定与获取o2上的锁定相同?(如果o1被锁定,将锁定o2阻塞直到o1被释放?)

har*_*old 11

如果它锁定了引​​用本身,那么锁定将毫无用处.问题是,引用本身是按值复制的,因此您总是会锁定一些立即被丢弃的临时副本.

所以这不是它的工作原理.锁定是在引用引用的实例上获得的,而不是引用本身.


Hen*_*man 6

获得锁定o1就像获得锁定一样o2

是.

它适用于称为同步块的东西,它是每个对象实例的一部分.但从功能上来说,您可以将其视为将对象用作词典中的键.

锁定引用与锁定Value类型相同,但问题相同.