我剛剛在akka中遇到了一段代碼。如何理解AKKA中使用的CCAS鎖定機制?
的核心方法我很感興趣,下面列出。
/**
* A very simple lock that uses CCAS (Compare Compare-And-Swap)
* Does not keep track of the owner and isn't Reentrant, so don't nest and try to stick to the if*-methods
*/
class SimpleLock {
val acquired = new AtomicBoolean(false)
def ifPossible(perform:() => Unit): Boolean = {
if (tryLock()) {
try {
perform
} finally {
unlock()
}
true
} else false
}
def tryLock() = {
if (acquired.get) false
else acquired.compareAndSet(false, true)
}
def tryUnlock() = {
acquired.compareAndSet(true, false)
}
有兩個相關的子問題。
1)這是什麼類SimpleLock
2)任何提示或背景知識,它是如何工作的目的是什麼?
我覺得這段代碼是用JAVA和scala編寫的,它利用了AtomicBoolean類。 所以我也會添加java標籤。
歡迎任何建議!不知道爲什麼有人投票關閉這個問題。
相關:
Can anyone interpret this C++ code (from OpenJDK6) into plain English?
我認爲你需要改進你的問題。究竟是什麼,你不明白? –
我只需要一些關於它如何工作的基本概念。謝謝,先生:) –