variableAccessCount
可以从协程C1&访问主线程中的;然而,根据我的理解,协同程序是一段运行在不同线程上的代码,在Android中线程不能被直接触及,有一种机制可以做到这一点,比如处理程序,在协同程序中我们也有
withContext()
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.coroutines.coroutineContext
var variableAccessCount = 0
fun main() {
println("${Thread.currentThread()}")
GlobalScope.launch {//Coroutine C1
println("${Thread.currentThread()}")
firstAccess() }
GlobalScope.launch {//Coroutine C2
println("${Thread.currentThread()}")
secondAcess() }
Thread.sleep(2000L)
print("The variable is accessed $variableAccessCount number of times")
}
suspend fun firstAccess() {
delay(500L)
variableAccessCount++
}
suspend fun secondAcess() {
delay(1000L)
variableAccessCount++
}
有人能帮我理解变量的同步是如何发生的吗
var functionCalls=0
Thread[main,5,main]
Thread[DefaultDispatcher-worker-3,5,main]
Thread[DefaultDispatcher-worker-2,5,main]
The variable is accessed 2 number of times