可以在不同的协程之间共享相同的协程上下文吗?我测试过了,似乎运行正常。
val context = Dispatchers.IO + myThreadLocal.asContextElement() + myThreadContextElement
val deferredResultOne = async(context) { /* some work */ }
val deferredResultTwo = async(context) { /* some work */ }
val resultOne = deferredResultOne.await()
val resultTwo = deferredResultTwo.await()
是的,总体来说还可以。
事实上,所有协程都会从其父作用域继承一些上下文,但它们无论如何都会创建自己的子上下文。如果你想了解更多详细信息,请查看这篇关于如何传递上下文的文章。以下是一瞥:
然后就取决于你的自定义上下文元素的语义是否也可以了:)