gpt4 book ai didi

kotlin - Dispatcher IO 和 Default 用法的区别

转载 作者:行者123 更新时间:2023-12-03 21:33:16 28 4
gpt4 key购买 nike

在这个问题中:Kotlin Coroutines choosing Dispatcher
我们可以理解使用Dispatcher.Default关于 CPU 进程,如图像/视频转换和 Dispatcher.IO写入/读取文件或 API 连接时。

但是在类里面Dispatcher.kt文档,用于 IO你会发现:

* This dispatcher shares threads with a [Default][Dispatchers.Default] dispatcher, so using
* `withContext(Dispatchers.IO) { ... }` does not lead to an actual switching to another thread —
* typically execution continues in the same thread.

所以基本上它们无论如何都在同一个线程上运行。有真正的区别还是最终每个使用都无关紧要?

谢谢!

最佳答案

区别在于 Dispatchers.Default受限于 CPU 内核的数量(最少 2 个),因此只有 N(其中 N == cpu 内核)任务可以在此调度程序中并行运行。

在 IO 调度器上默认有 64 个线程,因此该调度器上最多可以运行 64 个并行任务。

这个想法是 IO 调度程序花费大量时间等待(IO 阻塞),而默认调度程序旨在用于 CPU 密集型任务,其中很少或没有 sleep 。

关于kotlin - Dispatcher IO 和 Default 用法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59039991/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com