코 틀린 코 루틴은 "전의 어쩌면"보증을 제공합니까?
예를 들어, 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
. 따라서 첫 번째 예는 더 많은 스레드 안전 기능을 연습합니다.