暂停功能如何不阻塞主线程?

问题描述 投票:3回答:1

协程在Dispatchers上启动。Main在挂起时不会阻塞主线程。这是什么意思?所以当暂停功能在主线程上启动时,如果有一些行需要花费更长的时间,它会自动分配给新线程吗?这令人困惑吗?

async-await kotlin-coroutines suspend
1个回答
0
投票

Dispatchers.Main是一个CoroutineContext,它将协程分派到主线程中,但是当协程本身挂起时,即通过更改上下文或线程或其他某种原因,则“主线程变为空闲”,并且幕后的Continuation对象为负责随后继续执行。

由于挂起时主线程上没有正在运行的任务,因此它是自由的,并且能够由上下文(分派器)承担其他任务,因此由于没有被阻塞而被记录在案。

© www.soinside.com 2019 - 2024. All rights reserved.