关于多线程与多进程的介绍和区别,可以参见http://blog.csdn.net/luoweifu/article/details/46595285(阳光日志《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》),这篇博文讲的非常不错,通俗易懂。
由于老师项目的原因,多线程会用的多一些,多进程只在小的demo中使用过,对外声称自己会多线程多进程编程,可是在腾讯电面的过程中被问这两者的区别,自己却支支吾吾半天,感觉真是惭愧。话说腾讯对于应届生真的很重视基础,形如数据结构、C/C++基础、IO模型、socket编程、TCP/IP等。
现在我要在此好好总结下这两者的区别与使用场景。
多线程的优点:
1)最基础的:创建进程的空间和时间开销要大于线程,进程之间有着不同的地址空间,而同一进程里的多线程则使用同一地址空间,共享该进程里的堆、数据段;
2)方便高效的通信方式:线程间共享内存,通信方便,而进程通信需使用IPC;
3)较轻的切换开销 :不用切换地址空间,不用更改CR3寄存器,不用刷新TLB。
应用场景:
当不同任务间需要大量共享数据或频繁通信时,推荐使用多线程。