线程和协程的应用

(1)问题分析
考官主要想考察的是对线程和协程的区别已及对多线程和协程的理解。

(2)核心问题讲解
线程具体应用:
①后台任务,例如:定时向大量(100w以上)的用户发送邮件;
②异步处理,例如:发微博、记录日志等;
③分布式计算。
协程具体应用:
当程序中存在大量不需要CPU的操作时(IO),适用于协程。

(3)问题扩展
线程和协程的区别:线程更多是抢占式线程,协程是协作式线程。我们暂时不考虑是有栈还是无栈的区别,那么协程跟线程的区别更多在于你觉得哪个调度策略更高效。操作系统还是开发者。协程上下文切换现在是在用户空间,因此调度的成本相对较低。不过也不代表这就是高效的。我们可以笼统地认为在面对 IO 密集型任务的时候,协程更高效,因为绝大部分时间都是在等待 IO。而面对 CPU 密集型的任务,线程更高效。

(4)结合项目中使用

点击此处
隐藏目录