作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Kotlin 的 runBlocking Coroutine 应该阻塞当前线程,直到块内的 Coroutine 完成执行,但是当块内的 Coroutine 是 GlobalScope.launch 时,它似乎没有这样做
我试图了解 Kotlin 的协程如何工作并阅读此处的文档 - https://kotlinlang.org/docs/reference/coroutines/basics.html
在示例中 -
fun main() = runBlocking<Unit> { // start main coroutine
GlobalScope.launch { // launch new coroutine in background and continue
delay(1000L)
println("World!")
}
println("Hello,") // main coroutine continues here immediately
delay(2000L) // delaying for 2 seconds to keep JVM alive
}
fun main(){ // start main coroutine
GlobalScope.launch { // launch new coroutine in background and continue
delay(1000L)
println("World!")
}
println("Hello,") // main coroutine continues here immediately
runBlocking{
delay(2000L) // delaying for 2 seconds to keep JVM alive
}
}
最佳答案
作用域中的协程将阻塞,直到它在同一作用域中的所有子进程( job
)都完成。然而,明确地在另一个范围内启动协程不会使它们成为真正的 child ,因此它们不会被等待。
本文还提供了有关此特定案例的一些信息:https://medium.com/@elizarov/the-reason-to-avoid-globalscope-835337445abc
关于kotlin - runBlocking 协程不会阻止 GlobalScope.launch (?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551255/
在我的设置中,我试图有一个界面 Table继承自 Map (因为它主要用作 map 的包装器)。两个类继承自 Table - 本地和全局。全局的将有一个可变的映射,而本地的将有一个只有本地条目的映射。
Rust Nomicon 有 an entire section on variance除了关于 Box 的这一小节,我或多或少地理解了这一点和 Vec在 T 上(共同)变体. Box and Vec
我是一名优秀的程序员,十分优秀!