Kotlin的启动是否在主线程或后台线程中启动协程?

cl

我试图在Android上的后台运行任务,并且想知道是否需要指定GlobalScope.launch(Dispatchers.IO) { ... }一个简单对象GlobalScope.launch { ... }是否足够。我担心的是第二种形式是在主线程中启动协程还是在后台/ IO线程中启动协程


根据Android文档

launch不带Dispatchers.IO参数。当您不传递aDispatcher来启动时,任何协程都会从viewModelScope run在主线程中启动

根据Kotlin文档

在GlobalScope中启动协程时使用的默认调度程序由Dispatchers.Default表示,并使用共享的后台线程池,因此launch(Dispatchers.Default) { ... }使用与相同的调度程序GlobalScope.launch { ... }

我知道协程直到最近都是实验性的,Android-Kotlin与纯Kotlin的开发有所不同,但是这些陈述对我来说似乎是矛盾的。

Animesh Sahu

GlobalScope具有EmptyCoroutineContext,这意味着Dispatchers.Default将在其中直接启动时使用默认值

演示行为的示例:https : //pl.kotl.in/cLy3UfuZO

我担心的是第二种形式是在主线程中还是在后台/ IO线程中启动协程?

它将在Dispatchers下将其启动到CommonPool。默认情况下,该线程共享的最大线程数与CPU中的内核数相同,例如,如果您的CPU有6个内核,则最大线程数为6。但是Dispatchers.IO最多允许从CommonPool借用64个线程。Dispatchers.Main是单线程的。


的故事viewModelScope有所不同,该范围包含Dispatchers.Main为其默认的启动调度程序。您可以创建一个这样的范围,CoroutineScope(Dispatchers.Main)以便每次启动而无需指定调度程序将在Main中启动,类似于viewModelScope

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Kotlin协程会阻止Android中的主线程

来自分类Dev

LifecycleScope中的Kotlin协程不会阻塞主线程

来自分类Dev

是否建议在iOS中的另一个后台线程中启动后台线程

来自分类Dev

在后台线程中启动可运行

来自分类Dev

如何从协程后台线程更新UI线程?

来自分类Dev

使用协程的Kotlin / Native多线程

来自分类Dev

Kotlin协程比线程花费的时间更长

来自分类Dev

在当前协程中启动新协程是否安全?

来自分类Dev

Tomcat不在Eclipse中以“主线程”异常启动

来自分类Dev

同步线程协程

来自分类Dev

从主线程到后台

来自分类Dev

使用后台线程中的信号量限制同时运行的异步协程

来自分类Dev

在BroadcastReceiver中启动新线程是否安全?

来自分类Dev

在PyQT应用程序的主线程中使用回调方法在Python中启动新线程

来自分类Dev

如何从Android应用程序中的主线程以外的其他线程启动新活动?

来自分类Dev

从片段中的click事件启动协程

来自分类Dev

在主线程中引发异常时停止后台线程

来自分类Dev

从后台线程初始化主线程中的 UIView

来自分类Dev

启动线程以使主线程超时,但允许主线程暂停计时器

来自分类Dev

在Kotlin中使用线程或协程更好吗?

来自分类Dev

如何从Android Kotlin协程获取结果到UI线程

来自分类Dev

在表单加载时启动后台线程

来自分类Dev

在阻止后台线程的同时在后台线程的主线程中运行代码

来自分类Dev

在阻止后台线程的同时在后台线程的主线程中运行代码

来自分类Dev

在Kotlin协程中取消后如何重新启动工作?

来自分类Dev

使用主线程和后台线程

来自分类Dev

主线程或后台线程解析 swift

来自分类Dev

Python队列与主线程输入链接运行异步协程的对象

来自分类Dev

如何在不使用Unity的协程的情况下在主线程上运行函数

Related 相关文章

  1. 1

    Kotlin协程会阻止Android中的主线程

  2. 2

    LifecycleScope中的Kotlin协程不会阻塞主线程

  3. 3

    是否建议在iOS中的另一个后台线程中启动后台线程

  4. 4

    在后台线程中启动可运行

  5. 5

    如何从协程后台线程更新UI线程?

  6. 6

    使用协程的Kotlin / Native多线程

  7. 7

    Kotlin协程比线程花费的时间更长

  8. 8

    在当前协程中启动新协程是否安全?

  9. 9

    Tomcat不在Eclipse中以“主线程”异常启动

  10. 10

    同步线程协程

  11. 11

    从主线程到后台

  12. 12

    使用后台线程中的信号量限制同时运行的异步协程

  13. 13

    在BroadcastReceiver中启动新线程是否安全?

  14. 14

    在PyQT应用程序的主线程中使用回调方法在Python中启动新线程

  15. 15

    如何从Android应用程序中的主线程以外的其他线程启动新活动?

  16. 16

    从片段中的click事件启动协程

  17. 17

    在主线程中引发异常时停止后台线程

  18. 18

    从后台线程初始化主线程中的 UIView

  19. 19

    启动线程以使主线程超时,但允许主线程暂停计时器

  20. 20

    在Kotlin中使用线程或协程更好吗?

  21. 21

    如何从Android Kotlin协程获取结果到UI线程

  22. 22

    在表单加载时启动后台线程

  23. 23

    在阻止后台线程的同时在后台线程的主线程中运行代码

  24. 24

    在阻止后台线程的同时在后台线程的主线程中运行代码

  25. 25

    在Kotlin协程中取消后如何重新启动工作?

  26. 26

    使用主线程和后台线程

  27. 27

    主线程或后台线程解析 swift

  28. 28

    Python队列与主线程输入链接运行异步协程的对象

  29. 29

    如何在不使用Unity的协程的情况下在主线程上运行函数

热门标签

归档