kotlin - Kotlin channel 是否用于协程线程安全/同步/保持发生在关系之前?

标签 kotlin kotlinx.coroutines

Kotlin channel 中的函数是否线程安全?例如

val channel = Channel<Boolean>()
val job1 = GlobalScope.launch {
    channel.send(true)
}
val job2 = GlobalScope.launch {
    val x = channel.poll()
}

如果在上面的代码中 job1job2 执行之前由机器(实时)执行并且在不同的线程上,是否保证 x 设置为 true?或者它是否有可能被设置为 null(因为 cpu 缓存未更新)?

最佳答案

Channel 类 kotlinx.coroutines 库是线程安全的。它旨在支持多线程。

GlobalScope.launch 不一定意味着协程将在新线程中执行

关于kotlin - Kotlin channel 是否用于协程线程安全/同步/保持发生在关系之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54520548/

相关文章:

Android Studio 卡在 "Analyzing..."

android - 程序类型已经存在 : kotlinx. coroutines.experimental.EventLoopBase

android - 对使用 kotlin 协程的改造调用进行单元测试

gradle - 将凭证放在哪里

kotlin - 在 spek 测试中内存给出错误 : "can not be accessed in this context"

android - 在 Android 中构建具有多种风格的 jitpack 库

kotlin - 如何在使用当前父 Scope 的 `suspend fun` 中启动 Kotlin 协程?

gradle - `runBlocking` coroutine builder is not resolved in the project(其他builder已解析)

kotlin - 所有挂起函数都有作业吗?

android - lateinit 属性响应尚未初始化