C# 锁与 Java 同步 - 运行时是否有任何区别

本文关键字:是否 任何 区别 运行时 锁与 Java 同步 | 更新日期: 2023-09-27 18:32:30

我想知道locksyncronized的运行时是否有任何差异。我了解到syncronized是一个缓慢的操作,并且在Java中已经过时了。今天我在 C# 上看到了lock,我想知道它们是否相同,lock是我"想要"避免与 Java 相同的内容,或者他的速度要快得多,我想使用它......

谢谢!

C# 锁与 Java 同步 - 运行时是否有任何区别

1 sync并没有过时,java.util.concurrent.locks 包只是提供了并不总是需要的扩展函数。

2 锁定是在CPU级别完成的,在这方面Java和C#之间没有区别

请参阅 http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html

。需要特殊指令(称为内存屏障)来刷新本地处理器缓存或使其失效,以便查看其他处理器进行的写入操作或使其他人可以看到此处理器的写入操作。这些内存屏障通常在执行锁定和解锁操作时执行;它们对于高级语言的程序员来说是不可见的。