2013-09-24 24 views
-1

我想知道在运行时locksyncronized之间是否有区别。 我知道syncronized是一个缓慢的操作,在Java上已经过时了。 今天我在C#上看到了lock,我想知道它们是否相同,lock是我希望避免与Java中相同的东西,或者他可以更快,并且我想使用它...C#锁vs Java同步 - 运行时是否有区别?

谢谢!

+2

http://stackoverflow.com/questions/217707/are-there-any-differences-between-javas-synchronize-and-cs-lock – MichaC

+0

因为什么时候'同步'过时?这并不总是实现锁定的正确方式,但它仍然占有一席之地。 – kiheru

回答

2

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

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

看到http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html

...特别说明,所谓的记忆障碍,需要刷新或无效本地处理器缓存,以便查看其他处理器所做的写入操作,或者使该处理器的写入对其他处理器可见。这些内存屏障通常在执行锁定和解锁操作时执行;它们对程序员来说是高级语言不可见的。