¿Las corutinas de Kotlin ofrecen garantías de "sucede antes"?
Por ejemplo, ¿existe una garantía de "sucede antes" entre la escritura mutableVary 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 withContexty luego lee withContext. Entonces, el primer ejemplo ejerce más características de seguridad de hilo.