Kotlin 协程是否提供任何“之前发生”的保证?
例如,mutableVar
在这种情况下,在(可能)其他线程上写入和后续读取之间是否存在“之前发生”的保证:
suspend fun doSomething() {
var mutableVar = 0
withContext(Dispatchers.IO) {
mutableVar = 1
}
System.out.println("value: $mutableVar")
}
编辑:
也许额外的例子会更好地阐明这个问题,因为它更像 Kotlin (除了可变性)。此代码是否线程安全:
suspend fun doSomething() {
var data = withContext(Dispatchers.IO) {
Data(1)
}
System.out.println("value: ${data.data}")
}
private data class Data(var data: Int)