1.1进程与线程的基本概念
1.1.1 什么是进程,线程,彼此有什么区别
进程:一个程序动态执行的过程,包括创建、调度、消亡。是cpu资源分配的基本单位。
线程:是进程的一部分,位于进程内部,被称为轻量级进程,是cpu任务调度的基本单位。
区别:
- 地址空间和资源:进程拥有一个完整的0-4g的虚拟地址空间,每个进程资源独立,切换调度任务时资源开销大;线程没有独立的地址空间,栈空间独立,其余空间均与其他线程共享,其轻量,切换调度任务时效率更高。
- 通信:进程间通信IPC,较为复杂;线程间通信简单,但会引发资源竞争,需要进行同步和互斥的手段来辅助完成。
1.1.2多进程、多线程的优缺点
多进程:
优点:(1)每个进程进程相互独立,不影响主程序的稳定性,子进程崩溃没关系;
(2)通过增加CPU,容易扩充性能;
(3)可以尽量减少线程加锁/解锁的影响,极大提高性能;
缺点:(1)逻辑控制复杂,需要和主程序交互;
(2)多进程调度开销比较大;
(3)需要跨进程边界,如果有大量进程传送,就不太好,适合小数据传输。
多线程:
优点:(1)程序逻辑和控制方式简单;
(2)所有线程可以直接共享内存和变量;
(3)线程方式消耗的总资源比进程方式好;
缺点:(1)每个线程与主程序共用地址空间,受限于2GB地址空间;
- 线程之间的同步和加锁控制比较麻烦;
一个线程的崩溃可能影响到整个程序的稳定性;



