2013-09-24 23 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

...特別說明,所謂的記憶障礙,需要刷新或無效本地處理器緩存,以便查看其他處理器所做的寫入操作,或者使該處理器的寫入對其他處理器可見。這些內存屏障通常在執行鎖定和解鎖操作時執行;它們對程序員來說是高級語言不可見的。