【Linux编程】多线程与多进程的区别

关于多线程与多进程的介绍和区别,可以参见http://blog.csdn.net/luoweifu/article/details/46595285(阳光日志《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》),这篇博文讲的非常不错,通俗易懂。


由于老师项目的原因,多线程会用的多一些,多进程只在小的demo中使用过,对外声称自己会多线程多进程编程,可是在腾讯电面的过程中被问这两者的区别,自己却支支吾吾半天,感觉真是惭愧。话说腾讯对于应届生真的很重视基础,形如数据结构、C/C++基础、IO模型、socket编程、TCP/IP等。


现在我要在此好好总结下这两者的区别与使用场景。


多线程的优点:

1)最基础的:创建进程的空间和时间开销要大于线程,进程之间有着不同的地址空间,而同一进程里的多线程则使用同一地址空间,共享该进程里的堆、数据段;

2)方便高效的通信方式:线程间共享内存,通信方便,而进程通信需使用IPC;

3)较轻的切换开销 :不用切换地址空间,不用更改CR3寄存器,不用刷新TLB。


应用场景:

当不同任务间需要大量共享数据或频繁通信时,推荐使用多线程。



多进程的优点:

1)更强的鲁棒性:一个进程crash不会导致整个系统崩溃;


应用场景:

Chrome就是一个典型的多进程程序,里面每个标签页、扩展、插件都是单独的进程,各自独占资源,相互隔离,一个进程出错死掉只会影响一个页面或者插件,再也不会出现Flash插件出错崩溃导致整个浏览器崩溃的情况了;

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值