Kotlin 我可以使用Dispatchers.Default进行CPU限制/密集型操作吗?
我想了解在生产级服务器端应用程序中执行阻塞CPU操作的最佳实践/方法。(请注意,我指的是服务器端,而不是Android应用程序) 我所说的阻塞CPU操作是什么意思? 运行在CPU上并消耗CPU的操作,例如,在while循环中进行的巨大矩阵乘法、巨大数据转换等 我的设置Kotlin 我可以使用Dispatchers.Default进行CPU限制/密集型操作吗?,kotlin,kotlin-coroutines,Kotlin,Kotlin Coroutines,我想了解在生产级服务器端应用程序中执行阻塞CPU操作的最佳实践/方法。(请注意,我指的是服务器端,而不是Android应用程序) 我所说的阻塞CPU操作是什么意思? 运行在CPU上并消耗CPU的操作,例如,在while循环中进行的巨大矩阵乘法、巨大数据转换等 我的设置 我们正在构建由协同程序提供动力的kotlin dsl 我们使用单线程创建了自己的CoroutineScope,用于非阻塞操作,因此来自回调的变异变量是线程安全的,因为它们都在同一线程上运行 我们建议用户使用with contex
- 我们正在构建由协同程序提供动力的kotlin dsl
- 我们使用单线程创建了自己的
,用于非阻塞操作,因此来自回调的变异变量是线程安全的,因为它们都在同一线程上运行CoroutineScope
- 我们建议用户使用
来执行所有阻塞IO操作with context(Dispatchers.IO)
- 我们有固定的策略来执行非阻塞操作和线程安全突变,以及上面提到的执行
opsIO
- 我们正在探索执行阻塞CPU绑定操作的选项,如开头所述
- 使用
调度程序。默认值
用于do阻塞cpu操作
- 是否有人预见到使用默认dispatcher会出现任何问题
- 如果代码/可传递lib的其他部分也在使用
dispatcher怎么办Default
- 使用固定线程(通常等于没有CPU线程)创建单独的
,然后要求用户使用该隔离作用域来运行任何阻塞的CPU绑定操作CoroutineScope
来自Scala,通常不喜欢使用全局执行上下文和
分派器。默认值
以某种方式映射到全局上下文除非您想限制特定类型任务使用的CPU内核,否则我认为使用分派器。默认值
是一个良好的开端。在,建议使用withContext(Dispatchers.Default)
包装CPU绑定函数。除非您想限制特定类型任务使用的CPU内核,否则我认为使用Dispatchers.Default
是一个良好的开端。在中,建议使用withContext(Dispatchers.Default)
包装CPU绑定函数。