在 Kotlin 中有多种启动协程的方法。我发现了几个使用GlobalScope
和CoroutineScope
使用的例子。但是后者是在启动协程时直接创建的:
使用
GlobalScope
:fun loadConfiguration() { GlobalScope.launch(Dispatchers.Main) { val config = fetchConfigFromServer() // network request updateConfiguration(config) } }
使用
CoroutineScope
实例,在启动协程时直接创建:fun loadConfiguration() { CoroutineScope(Dispatchers.Main).launch { val config = fetchConfigFromServer() // network request updateConfiguration(config) } }
在这种情况下,这两种方法有区别吗?
第二种情况是不是违反了结构化并发的原则?