多线程和多进程的使用场景

本文探讨了多进程和多线程各自的优势及应用场景。多进程适用于需要强隔离和高容错性的场景,如web服务器、数据库等;而多线程则适合数据共享和快速响应,如桌面软件、I/O密集型应用。在选择时,考虑任务的创建销毁频率、计算量、相关性、扩展性和个人熟悉度,往往采用“进程+线程”的混合模式。
摘要由CSDN通过智能技术生成

多进程的优点

  • 编程相对容易;通常不需要考虑锁和同步资源的问题。
  • 更强的容错性:比起多线程的一个好处是一个进程崩溃了不会影响其他进程。
  • 有内核保证的隔离:数据和错误隔离。
    对于使用如C/C++这些语言编写的本地代码,错误隔离是非常有用的:采用多进程架构的程序一般可以做到一定程度的自恢复;(master守护进程监控所有worker进程,发现进程挂掉后将其重启)。

多线程的优点

  • 创建速度快,方便高效的数据共享
    共享数据:多线程间可以共享同一虚拟地址空间;多进程间的数据共享就需要用到共享内存、信号量等IPC技术。
  • 较轻的上下文切换开销,不用切换地址空间,不用更改寄存器,不用刷新TLB。
  • 提供非均质的服务。如果全都是计算任务,但每个任务的耗时不都为1s,而是1ms-1s之间波动;这样,多线程相比多进程的优势就体现出来,它能有效降低“简单任务被复杂任务压住”的概率。

多进程应用场景

nginx主流的工作模式是多进程模式(也支持多线程模型)
几乎所有的web server服务器服务都有多进程的,至少有一个守护进程配合一个worker进程,例如apached,httpd等等以d结尾的进程包括init.d本身就是0级总进程,所有你认知的进程都是它的子进程;
chrome浏览器也是多进程方式。 (原因:①可能存在一些网页不符合编程规范,容易崩溃,采用多进程一个网页崩溃不会影响其他网页;而采用多线程会。②网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值