语句“未同步的对象通常表现优于 同步的“现代编译器不再总是如此。
这是我今天多次听到的断言。我对断言有两种不同的解释:
随着现代编译器的发展,对同步对象施加的开销可能很小,只能被忽略。如果是这种情况,现代编译器如何实现这一目标?
在某些情况下,同步对象和未同步对象的执行效果相同,甚至是同步对象比非同步对象执行得更好的情况。我不认为这是可能的,但是谁知道呢?
答案 0 :(得分:1)
一种情况是编译器可以通过线程间转义分析静态地确定一个对象永远不会被多个线程访问。然后编译器可以初始化" vtable" (或任何适当的方法调度机制)与方法的非同步版本。
PS。以上是关于声明的第一次解释。