오늘 안드로이드에서 코 틀린 코 루틴을 사용하기 시작했습니다. 그리고 저는 Anko가 그들 자신을위한 도우미 세트를 가지고 있다는 것을 알게되었습니다. 나는 왜 asReference()
이 존재하는지 이해하지만, bg()
이 왜 핵심 coroutines lib가 이미 async()
을 가지고 있는지를 알 수 없다.Android에서 Kotlin 코 루틴 : 왜 async() 대신 Anko에서 bg()를 사용합니까?
bg()
코드는 매우 간단하고 async()
내부 사용
@PublishedApi
internal var POOL = newFixedThreadPoolContext(2 * Runtime.getRuntime().availableProcessors(), "bg")
inline fun <T> bg(crossinline block:() -> T): Deferred<T> = async(POOL) {
block()
}
그래서 bg()
대신 async()
를 사용의 장점은 무엇입니까? async()
은 Android 앱에서 어떤 점에서 비효율적입니까?
답변을 주셔서 감사합니다. @ as1m0nw1 그러나 'async'는 풀을 제공 할 필요가 없습니다. 선택 사항이며 기본적으로'CommonPool'을 사용합니다. 그래서'bg'의 장점은 다른 풀? – Franco
네,하지만'CommonPool'에 대한 통제권이 없습니다, 맞습니까? 어쩌면'POOL'이 어떤 방식 으로든 통제 될 필요가 있을지도 모른다. 그래서 그들 자신이'bg'에서 사용되는 자신의 풀 인스턴스를 정의합니다. – s1m0nw1
"아마"내가 말한 것은 당신 쪽에서 @ s1m0nw1이 맞다고 생각하기 때문입니다. 나는 그들이 다른 수영장을 사용한다는 코드에서 이미 볼 수 있었고 누군가가 왜 그런지 설명 할 수 있도록 질문을 게시했습니다. 다시 한 번 해답을 주셔서 감사합니다. 그러나 'bg'를 사용하는 데는 이유가 있는지, 그 이유는 무엇인지에 대한 구체적인 정보가 필요합니다. – Franco