区别
多进程的优点:
- 编程调试相对容易:不需要考虑锁和同步资源
- 可靠性好:拥有独立的地址空间,进程之间相互隔离
- 适合于多核、多机分布式:如果一台机器不够,扩展到多台机器比较简单
- 多进程适用于CPU密集型。
- 缺点:资源占用多,切换代价大
多线程的优点:
- CPU,内存占用少
- 创建销毁代价小,切换速度快
- 多线程适用于I/O密集型,经常会由于I/O阻塞导致频繁的线程切换。同时也适合于单机多核场景。
- 缺点:一个线程挂掉将导致整个进程挂掉
应用场景
1. 多进程应用场景
- nginx主流的工作模式是多进程模式(也支持多线程模式)
- 守护进程配合worker进程,例如apached,httpd等等以d结尾的进程
- Chrome浏览器也是多进程(网页之间不会影响)
- redis也可以归类到“单线程多进程”模型(平时工作进程是单线程,涉及到耗时操作如持久化或者aof重写时会用到多进程)
2. 多线程应用场景
- 普通的Web服务器,因为连接需要频繁的创建和销毁
- 提供非均质服务,事件响应有优先级
- 单任务并行计算,像图形处理,算法处理
参考链接:
1. https://blog.csdn.net/N1314N/article/details/93652814
2. https://blog.csdn.net/weixin_39731083/article/details/82015830
3. https://blog.csdn.net/RUN32875094/article/details/79515384