Android 在kotlin中是否按顺序获取锁
假设我们在kotlin中有一个函数,它获取锁,然后更改一个值。像这样的Android 在kotlin中是否按顺序获取锁,android,kotlin,Android,Kotlin,假设我们在kotlin中有一个函数,它获取锁,然后更改一个值。像这样的 fun changeWithLock(newValue) { withLock { value = newValue } } 现在,如果这个函数被调用两次,使得第一个调用不会立即获取锁,并且两个函数调用都在等待获取锁 fun changeValue() { changewithLock(newValue1) changeWithLock(newValue2) } 变量va
fun changeWithLock(newValue) {
withLock {
value = newValue
}
}
现在,如果这个函数被调用两次,使得第一个调用不会立即获取锁,并且两个函数调用都在等待获取锁
fun changeValue() {
changewithLock(newValue1)
changeWithLock(newValue2)
}
变量
value
的最终值是多少?这里的两个方法调用是连续的(没有启动线程或其他并发处理),因此它们不会同时尝试获取锁
在这种情况下,该值应始终为newValue2
如果这种情况涉及到对
withLock
(在同一个锁上)的真正并发调用,则可能是一种不确定的情况,但这里不是这种情况。您在这里指的是哪个withLock
方法?我知道的那些需要一个Lock
接收器或Mutex
接收器(在kotlinx协同程序中),但第二个接收器也需要挂起函数。