Kotlin channel 中的函数是否线程安全?例如
val channel = Channel<Boolean>()
val job1 = GlobalScope.launch {
channel.send(true)
}
val job2 = GlobalScope.launch {
val x = channel.poll()
}
如果在上面的代码中 job1
在 job2
执行之前由机器(实时)执行并且在不同的线程上,是否保证 x
设置为 true
?或者它是否有可能被设置为 null
(因为 cpu 缓存未更新)?
最佳答案
Channel
类 kotlinx.coroutines 库是线程安全的。它旨在支持多线程。
GlobalScope.launch
不一定意味着协程将在新线程中执行
关于kotlin - Kotlin channel 是否用于协程线程安全/同步/保持发生在关系之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54520548/