android - 是在 kotlin 中顺序获取的锁
问题描述
假设我们有一个在 kotlin 中获取锁然后更改值的函数。像这样的东西
fun changeWithLock(newValue) {
withLock {
value = newValue
}
}
现在,如果此函数被调用两次,那么第一次调用不会立即获取锁,并且两个函数调用都在等待获取锁。
fun changeValue() {
changewithLock(newValue1)
changeWithLock(newValue2)
}
变量的最终值是value
多少?
解决方案
这2个方法调用在这里是顺序的(没有启动线程或其他并发处理),因此它们不会处于同时尝试获取锁的情况。
在这种情况下,该值应该始终如一newValue2
。
如果情况涉及真正并发调用withLock
(在同一个锁上),则可能是不确定的情况,但这里不是这种情况。
推荐阅读
- c++ - 包含 netinet/in.h 和 netinet6/in6.h 时重新定义类型
- javascript - Redux connect 将一个不必要的 prop "dispatch" 传递给连接的组件
- python - 如何正确分组列?
- git - 如何仅保留 Git 存储库的最新版本
- terraform - 在 terraform 中运行破坏时处理外部数据源
- reactjs - 如何清理在 useEffect 之外创建的异步任务
- javascript - 如何在反应js中将数组转换为键值对?
- java - 为什么使用 BufferedReader 将数字输入值相加?
- go - 在 Go 中表示状态
- google-play - 推出的应用程序更新在“处理更新”中停留了 3 天