列表

详情


12. 请你说说线程和协程的区别

回答思路

标准回答 线程和协程的区别如下:
 1. 线程是操作系统的资源,线程的创建、切换、停止等都非常消耗资源,而创建协程不需要调用操作系统的功能,编程语言自身就能完成,所以协程也被称为用户态线程,协程比线程轻量很多;
 2. 线程在多核环境下是能做到真正意义上的并行,而协程是为并发而产生的;
 3. 一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行;
 4. 线程进程都是同步机制,而协程则是异步;
 5. 线程是抢占式,而协程是非抢占式的,所以需要用户自己释放使用权来切换到其他协程,因此同一时间其实只有一个协程拥有运行权,相当于单线程的能力;
 6. 操作系统对于线程开辟数量限制在千的级别,而协程可以达到上万的级别。

上一题