Atitit 多线程 什么时候使用多进程的选择场景 目录 1.1. 看实现,比如你的用node.js实现,那就没得选了,只能多进程 1 1.2. 如果用java这一类,可以选择多进程与多线程模式,或

Atitit  多线程 什么时候使用多进程的选择场景

目录

1.1. 看实现,比如你的用node.js实现,那就没得选了,只能多进程 1

1.2. 如果用java这一类,可以选择多进程与多线程模式,或者综合使用,各有所长 1

1.3. 稳定性优先情况下 要选择多进程,万一挂掉,不影响后继 1

1.4. 性能优先一般选择多线程 1

1.5. 编程、调试维度  多进程简单 1

2. I/O密集型?CPU密集型 与多进程多线程选择。 2

3. 结论 2

3.1. 一般来说  开发效率优先  ,性能其次,所以多进程模式更具适合一些 2

3.2. 综合起来,某些模块使用多进程多一些,,某些多线程多一些 2

4. Ref 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

猜你喜欢

转载自blog.csdn.net/attilax/article/details/80860397