进程线程类
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
定义与区别
定义:
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位(可以理解为进程是可以独立运行的)
线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。一个线程可以创建撤销另外一个线程。(在1个进程中可以有多个线程,多个线程之间可以互相操作)
区别:
一个线程只能属于一个进程,而一个进程可以拥有多个线程。线程是进程工作中的最小单位。一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。同一个进程下的不同的多个线程,共享父进程的地址空间。线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步(中间件、消息队列)。线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
进程与线程的优缺点
进程 优点
1.每个进程互相独立、不影响主程序的稳定性,子进程崩溃不影响其他进程。
2.通过增加CPU,就可以扩充性能。
3.可以尽量减少线程加锁与解锁的影响,极大的提高了性能。
进程 缺点
a)逻辑控制复杂,需要和主程序交互。
b)多进程调度开销大。
线程 优点
a)程序逻辑和控制方式简单
b)所有线程可以直接共享内存和变量等
c)线程方式消耗的总资源比进程方式少
线程 缺点
1.每个线程与主程序共用地址空间,最大内存地址受限。
2.线程之间的同步和加锁不易控制。
3.一个线程的崩溃可能影响到整个程序的稳定性。