大佬教程收集整理的这篇文章主要介绍了何时在 Kotlin 中使用 Unconfined,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我什么时候会选择使用 dispatcherS.Unconfined?协程应该在哪里运行并不重要吗?所以你让协程选择更适合的线程池?
它与 dispatchers.Default 有何不同?是不是在运行默认调度程序时总是在定义为默认线程池的特定线程池中?
无限制调度程序适用于既不消耗 CPU 时间也不更新任何仅限于特定线程的共享数据(如 UI)的协程。
所以,我基本上会在非 IO、UI 或计算繁重的情况下使用它:D。 我认为这方面的用例数量非常少,但我会想到一个不繁重的操作,但出于某种原因,您仍然希望它在不同的线程上运行。
Here's a link 了解它的实际工作原理。
Dispatchers.Default
确实不同,它主要用于繁重的 CPU 操作。
这是因为,它实际上将工作分派到一个线程池中,该线程池的线程数等于 CPU 内核的数量,并且至少为 2。这样开发人员在进行繁重的计算工作时可以充分利用 CPU 的全部容量。>
所以你让协程选择更适合的线程池?
这不是 Unconfined
的工作原理。理解它的最好方法是它是一个“无操作”调度程序,实际上根本不执行任何调度。无论您在何处调用 conTinuation.resume()
,协程都会在此恢复执行——在该调用中。当 resume()
调用返回时,表示协程再次挂起或完成。
在正常编程中,您通常从回调中调用 conTinuation.resume()
并且运行回调的不是您的代码,因此您实际上无法控制协程将恢复的线程。从不受您控制的库提供的回调中恢复时,不建议使用 Unconfined
调度程序。
Unconfined
确实是一种特殊情况的工具,您可以在自己构建协程执行环境时使用,或者在其他自定义场景中使用。基本上,只有在您积极寻找禁用正常调度机制的方法时才应该使用它。
以上是大佬教程为你收集整理的何时在 Kotlin 中使用 Unconfined全部内容,希望文章能够帮你解决何时在 Kotlin 中使用 Unconfined所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。