gpt4 book ai didi

kotlin - withContext和suspendCancellableCoroutine之间的区别

转载 作者:行者123 更新时间:2023-12-02 13:11:34 34 4
gpt4 key购买 nike

我是协程新手

这是一个受欢迎的示例:

suspend fun findBigPrime(): BigInteger =
withContext(Dispatchers.IO) {
BigInteger.probablePrime(4096, Random()))
}

但是,它可以写为:
suspend fun findBigPrime(): BigInteger =
suspendCancellableCoroutine {
it.resume(BigInteger.probablePrime(4096, Random()))
}

真正的区别是什么?

最佳答案

What's the real difference?



实际上,几乎没有任何关系。
suspendCancellableCoroutine {
it.resume(BigInteger.probablePrime(4096, Random()))
}

除了在简单的直接调用之上增加无用的开销外,这什么也没做
BigInteger.probablePrime(4096, Random())

如果您仍在 suspendCancellableCoroutine块中继续恢复执行,协程根本不会挂起。
withContext(Dispatchers.IO) {
BigInteger.probablePrime(4096, Random()))
}

这将暂停协程并在另一个线程上启动内部协程。内部协程完成后,它将恢复当前协程并显示结果。

关于kotlin - withContext和suspendCancellableCoroutine之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61775505/

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