线程、进程与程序+并行与并发

线程:并发性好、资源消耗少;资源管理和保护不太适合,由于资源是共享的。多线程

进程:方便资源管理和回收;并发性不如线程,资源消耗大。并发

 

线程:cpu 调度基本单位。比进程更小的独立运行单位,同一进程中可有多个线程并发执行。函数

进程:cpu 分配资源基本单位。线程

 

并行:两个或多个事件,在同一时刻发生。进程

并发:两个或多个事件,在同一时间间隔发生。事件

 

各个线程能够共享进程资源(内存地址、文件 Io),也能够独立调度。线程是 CPU 调度的基本单位。内存

 

进程是具备必定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。资源

  线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。同步

  进程和线程的关系:多进程

  (1)一个线程只能属于一个进程,而一个进程能够有多个线程,但至少有一个线程。

  (2)资源分配给进程,同一进程的全部线程共享该进程的全部资源。

  (3)处理机分给线程,即真正在处理机上运行的是线程。

  (4)线程在执行过程当中,须要协做同步。不一样进程的线程间要利用消息通讯的办法实现同步。

  进程与线程的区别:

  (1)调度:线程做为调度和分配的基本单位,进程做为拥有资源的基本单位

  (2)并发性:不只进程之间能够并发执行,同一个进程的多个线程之间也可并发执行

  (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但能够访问隶属于进程的资源.

  (4) 系统开销:在建立或撤消进程时,因为系统都要为之分配和回收资源,致使系统的开销明显大于建立或撤消线程时的开销。可是进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不一样执行路径。线程有本身的堆栈和局部变量,但线程之间没有单独的地址空间,一个进程死掉就等于全部的线程死掉,因此多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些

  结论:

  (1)线程是进程的一部分

  (2)CPU调度的是线程

  (3)系统为进程分配资源,不对线程分配资源

 

同一进程间的线程究竟共享哪些资源呢,而又各自独享哪些资源呢?

共享的资源有
a. 堆  因为堆是在进程空间中开辟出来的,因此它是理所固然地被共享的;所以new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)
b. 全局变量 它是与具体某一函数无关的,因此也与特定线程无关;所以也是共享的
c. 静态变量 虽然对于局部变量来讲,它在代码中是“放”在某一函数中的,可是其存放位置和全局变量同样,存于堆中开辟的.bss和.data段,是共享的
d. 文件等公用资源  这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。
独享的资源有
a. 栈 栈是独享的
b. 寄存器  这个可能会误解,由于电脑的寄存器是物理的,每一个线程去取值难道不同吗?其实线程里存放的是副本,包括程序计数器PC
相关文章
相关标签/搜索