1、多线程
多线程的优点
- 资源利用率更好,例如在IO阻塞的时候,CPU可以去干一些其他的事情。
- 程序设计更简单
- 程序响应更快
多线程的代价
- 往往使设计更复杂,多线程之间的交互往往比较复杂,错误难以发现
- 上下文切换的开销,线程与线程之间的切换往往需要代价,这个代价也不得不考虑
- 势必增加资源消耗,线程之间的切换不仅要消耗CPU,而且还需要内存存储堆栈信息
2、并发编程模型
并行工作者模型
在并行工作者模型中,委派者(Delegator)将传入的作业分配给不同的工作者们,工作者们并行运行在不同线程上。
流水线模型
阻塞IO
非阻塞IO