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)
withContext
示しています。最初の例は最初に作成し、内withContext
で変更し、その後にを読み取りますwithContext
。したがって、最初の例では、より多くのスレッドセーフ機能を実行します。