如何解决如何检查协程是否使用相同的上下文?
我有两个协程,我想检查它们是否在同一上下文/调度程序中运行。这是我的问题的简化版本,但是答案将适用于我正在做的事情:
@Test
fun test() {
val io = runBlocking(Dispatcher.IO) {
coroutineContext
}
val nonIo = runBlocking() {
coroutineContext
}
assertNotEquals(io,nonIo)
}
但是,这是一个糟糕的测试,因为我只是在比较两个不同的对象。我想比较一下他们是否使用Dispatcher.IO
。
解决方法
我认为您的意思是问协程是否使用相同的Dispatcher,对吗?调度程序只是CoroutineContext的一部分。您可以将CoroutineContext的get
函数与键ContinuationInterceptor
一起使用来检索Dispatcher。
val io = withContext(Dispatchers.IO) {
coroutineContext[ContinuationInterceptor]
}
val nonIo = withContext(Dispatchers.Default) {
coroutineContext[ContinuationInterceptor]
}
assertNotEquals(io,nonIo)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。