为什么MethodImplOptions.当不建议这样做时,Synchronized会导致锁定

本文关键字:Synchronized 锁定 这样做 MethodImplOptions 为什么 | 更新日期: 2023-09-27 17:53:48

当我注意到以下内容时,我正在查看MethodImplOptions枚举的可用值:

对于公共类型,不建议使用Synchronized标志对实例或类型进行锁定,因为除了您自己的代码之外,其他代码也可以对公共类型和实例进行锁定。这可能会导致死锁或其他同步问题。

所以我想知道为什么编译器(或这是由。net运行时?)这样做,而不是创建一个私有字段和锁定,而不是?

为什么MethodImplOptions.当不建议这样做时,Synchronized会导致锁定

这是由CLR完成的-如果是由编译器完成的,则不需要属性。

这可能是为了使它更容易运行Java代码…要么是这样,要么是Java思维模式造成的错误:(

(事实上,每个对象都可以有一个与之相关的监视器,这是一个错误的开始,我认为…基本上是从Java复制的)