Atitit 多线程 什么时候使用多进程的选择场景
目录
1.1. 看实现,比如你的用node.js实现,那就没得选了,只能多进程 1
1.2. 如果用java这一类,可以选择多进程与多线程模式,或者综合使用,各有所长 1
1.3. 稳定性优先情况下 要选择多进程,万一挂掉,不影响后继 1
3.1. 一般来说 开发效率优先 ,性能其次,所以多进程模式更具适合一些 2
3.2. 综合起来,某些模块使用多进程多一些,,某些多线程多一些 2
1.1. 看实现,比如你的用node.js实现,那就没得选了,只能多进程
1.2. 如果用java这一类,可以选择多进程与多线程模式,或者综合使用,各有所长
1.3. 稳定性优先情况下 要选择多进程,万一挂掉,不影响后继
1.4. 性能优先一般选择多线程
1.5. 编程、调试维度 多进程简单
对比维度 |
多进程 |
多线程 |
总结 |
数据共享、同步 |
数据共享复杂,需要用IPC;数据是分开的,同步简单 |
因为共享进程数据,数据共享简单,但也是因为这个原因导致同步复杂 |
各有优势 |
内存、CPU |
占用内存多,切换复杂,CPU利用率低 |
占用内存少,切换简单,CPU利用率高 |
线程占优 |
创建销毁、切换 |
创建销毁、切换复杂,速度慢 |
创建销毁、切换简单,速度很快 |
线程占优 |
编程、调试 |
编程简单,调试简单 |
编程复杂,调试复杂 |
进程占优 |
可靠性 |
进程间不会互相影响 |
一个线程挂掉将导致整个进程挂掉 |
进程占优 |
分布式 |
适应于多核、多机分布式;如果一台机器不够,扩展到多台机器比较简单 |
适应于多核分布式 |
进程占优 |
2. I/O密集型?CPU密集型 与多进程多线程选择。
一般io密集型 从性能考虑可选多线程, 稳定性考虑选多进程
Cpu密集型也是如此
3. 结论
3.1. 一般来说 开发效率优先 ,性能其次,所以多进程模式更具适合一些
3.2. 综合起来,某些模块使用多进程多一些,,某些多线程多一些
4. Ref
多线程还是多进程的选择及区别 - CSDN博客.html