我遇到了一些代码,这些代码创建了带有单个线程上下文的CoroutineScope
。
val serialThreadContext = newSingleThreadContext("mysinglethreadcontext")
fun myScope(): CoroutineScope = CoroutineScope(serialThreadContext)
然后在代码库的其他地方,在这个范围内启动协同.
myScope().launch {
someOtherMethod()
...
}
据我所知,所有这些创建的协同机制都将安排在同一个线程上,但我无法找到任何关于执行或暂停顺序的特定文档。
这在我的脑海中引起了以下问题:
如果
suspend
函数,那么线程还能挂起这个协同线吗?当线程从调度程序中提取协同线时,
发布于 2022-07-28 15:59:37
只有在挂起函数时才能暂停
someOtherMethod
,如果它不是挂起函数,就无法避免等待该函数返回,然后才能通过挂起释放线程。注意,标记为suspend
的函数仍然不一定会挂起调用它的协同线。如果它内部不对其他调度程序执行挂起工作,它仍将占用您的调用线程.https://stackoverflow.com/questions/73155436
复制相似问题