进程和线程
中通过多个线程同时执行业务逻辑,发处理请求并进行计算。相对于之前的单线程或者单进程应用来说,并发和多线程技术可
以充分发挥目前的硬件性能,缩短处理时间。
操作系统中执行程序的实体是进程和线程。代码通过进程和线程完成实际的任务
。
进程和线程的定义
进程(Process)是指操作系统中一个独立运行的程序。在操作系统中,进程是具有一定独立功能
的程序的一次运行,是操作系统进行资源分配和调度的一个独立单位。每个进程拥有独立的内存空间等系统资源。进程和进程
之间的系统资源不是彼此独立的。进程之间一般通过管道类的进程间通信(Inter-Process Communic
ation,IPC)方式进行通信。
线程(Thread)是指同一个程序(进程)内部每个单独执行的流程,是CPU调
度和分派的基本单位。它是比进程更小的能独立运行的基本单位。在同一进程内部可以有多个线程。线程本身基本上不拥有系
统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和堆栈),但是它可与同属一个进程的线程共享进
程所拥有的全部资源。线程是比进程更为轻量的执行实体。
进程与线程的关系
一个线程可以创建和撤销另一个线程,同一个进
程中的多个线程之间可以并发执行。相对进程而言,线程是一个更接近于执行体的概念,它可以与同进程中的其他线程共享数
据,但拥有自己的栈空间,拥有独立的执行序列。进程中包含多个线程,这些线程共享进程下的各类资源。
进程与线程的区别
进程与线程的主要差别在于它们拥有不同的操作系统资源管理方式。进程有独立的地址空间。当一个进程崩溃后,在保护模式
下不会对其他进程产生影响。而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的
地址空间。一个线程死掉就等于整个进程死掉。所以多进程的程序要比多线程的程序健壮。但在进程切换时,耗费资源较大,
效率要低一些。对于一些要求同时执行并且又要共享某些变量的并发操作,只能用线程,而不能用进程。
一个程序至少有一个
进程,一个进程至少有一个线程。线程的划分尺度小于进程,这使得多线程程序的并发性高。不同的进程在执行过程中拥有独
立的内存单元,而多线程是共享内存,因此多线程极大地提高了程序的运行效率。
线程在执行过程中与进程也是有区别的。每
个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行,必须依存在应用程序中,由应用
程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于:在一个应用程序中有多个执行部分可以同时执行。但操作
系统并没有将多个线程看作多个独立的应用(多个独立的进程),来实现进程的调度和管理以及资源分配。这就是进程和线程
的重要区别。在很多地方,线程被看作一种“轻量级进程”。