比较和交换原子整数kotlin中的值

Compare and swap value in atomic integer kotlin

嘿,我正在学习 kotlin 中的原子整数。我想知道如果当前值小于新值是否有原子整数交换值。例如

原子整数 10

场景 1 新值是 5 并且它变为 5 因为 5 小于 10

场景 2 新值是 20 它不会改变原子值,因为 20 大于 10.

我们可以通过 CompareAndSwap 功能做到这一点吗?

根据 @LouisWasserman 建议更新

fun AtomicInt.compareAndSetIfLess(newValue: Int): Boolean {
    do {
        val oldValue = value
        if (newValue > oldValue) {
            return false
        }
    } while (!compareAndSet(oldValue, newValue))
    return true
}

我在 Unresolved reference: AtomicInt

上遇到错误

当然可以。下面是一个compareAndSet版本,我想这就是你想要的,但是把它改成compareAndSet也很容易:

fun AtomicInt.compareAndSetIfLess(newValue: Int): Boolean {
  do {
    val oldValue = value
    if (newValue > oldValue) {
      return false
    }
  } while (!compareAndSet(oldValue, newValue))
  return true
}