算法

笔记 | 初探Kotlin协程

如何理解协程

协程是一种不同于进程线程的存在,其本质是一种函数,同一线程中的多个协程是串行执行的,但为了理解仍然需要三者一起对比。

进程、线程、协程三者的上下文切换对比:

进程 线程 协程
切换者 操作系统 操作系统 用户(编程者/应用程序)
切换时机 根据操作系统自己的切换策略,用户不感知 根据操作系统自己的切换策略,用户不感知 用户自己(的程序)决定
切换内容 页全局目录&内核栈&硬件上下文 内核栈&硬件上下文 硬件上下文
切换内容的保存 保存于内核栈中 保存于内核栈中 保存于用户自己的变量(用户栈或者堆)
切换过程 用户态 - 内核态 - 用户态 用户态 - 内核态 - 用户态 用户态(没有陷入内核态)
切换效率