¿Las corutinas de Kotlin ofrecen garantías de "sucede antes"?
Por ejemplo, ¿existe una garantía de "sucede antes" entre la escritura mutableVar
y la posterior lectura en (potencialmente) otro hilo en este caso:
suspend fun doSomething() {
var mutableVar = 0
withContext(Dispatchers.IO) {
mutableVar = 1
}
System.out.println("value: $mutableVar")
}
Editar:
Tal vez un ejemplo adicional aclare mejor la pregunta porque es más Kotlin-ish (excepto por la mutabilidad). ¿Es este código seguro para subprocesos?
suspend fun doSomething() {
var data = withContext(Dispatchers.IO) {
Data(1)
}
System.out.println("value: ${data.data}")
}
private data class Data(var data: Int)
withContext
, mientras que el primer ejemplo lo crea primero, muta dentro withContext
y luego lee withContext
. Entonces, el primer ejemplo ejerce más características de seguridad de hilo.