Android中的Kotlin协程:为什么要使用Anko中的bg()而不是async()?

我今天开始在Android上使用Kotlin协同程序,并且注意到Anko对它们有一套自己的辅助方法。 我明白为什么asReference()存在,但我不明白为什么bg() asReference() ,因为核心协程库lib已经具有async()

bg()代码非常简单,它内部使用async()

 @PublishedApi internal var POOL = newFixedThreadPoolContext(2 * Runtime.getRuntime().availableProcessors(), "bg") inline fun  bg(crossinline block: () -> T): Deferred = async(POOL) { block() } 

那么使用bg()而不是async()的优点是什么? 对于Android应用程序, async()效率低下吗?

正如你所看到的, bg使用POOL作为它的CoroutineDispatcher , 在这里阅读它。

基本上这个函数只存在于执行这些任务的池中。 直接使用async将需要您提供一个。 所以最后,通过bg开始的每个任务都保证在同一个池中执行。

我不认为使用bg有任何优势。 再加上Anko将你连接到kotlinx协同程序库的旧版本,所以我不打扰使用它。