【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插件出错崩溃导致整个浏览器崩溃的情况了;

           

你可能感兴趣的:(【Linux编程】多线程与多进程的区别)