当前位置:嗨网首页>书籍在线阅读

02-协程与线程

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.1.1 协程与线程

线程操作需要VM或OS的支持,通过CPU调度来执行生效;而协程主要通过编译技术来实现,通过插入代码来生效,不需要VM或OS的额外支持。简单来说,协程是编译器级的,而线程是操作系统级的。

协程可以认为是用户空间下的线程。协程实现的东西,用线程也可以完成,但通常多出了一些加锁和通信的操作。线程是抢占式的,而协程是非抢占式的,因此同一时间其实只有一个协程拥有运行权,相当于单线程的能力。

协程的出现并不是为了取代线程,它抽象于线程之上。线程是被分割的CPU资源,协程是组织好的代码流程,协程需要线程来承载运行,线程是协程的资源。协程不会直接使用线程,而是利用执行器来关联线程或线程池,执行器可以调用当前线程、UI线程或新建线程。也就是说,线程是协程的资源,协程通过执行器来间接使用线程资源。