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