计算机上运行的程序都会有进程,你可以打开windows的进程管理器来查看系统所有的进程信息,而linux可以使用top或者ps来查看所有的进程信息。
线程是比进程还要细分的一个单元,它在进程里面,一个进程下面可以有多个线程。
下表为进程和线程的主要区别:
项目 |
进程 |
线程 |
unit |
分配系统资源(cpu时间、内存等)的基本单位 |
进程内的一个执行单元,CPU调度和分派的基本单位 |
地址空间 |
有独立的地址空间 |
和同进程内的其他线程共享地址空间 |
健壮性 |
很健壮,一个进程崩溃对其他进程没有影响 |
不健壮,相同进程内,一个线程崩溃(意味着进程崩溃),其他线程也会崩溃 |
调度(切换) |
进程上下文切换,资源耗费大 |
轻量级进程切换,不用重新加载内存,一个进程内的线程切换要比不同进程内的线程切换快5-50倍 |
创建 |
拷贝父进程的地址空间,耗时较长 |
直接创建,比进程创建要快10-100倍 |
通信 |
进程间通信,用到IPC通信机制(共享内存、socket、信号、管道等) |
可以直接和相同进程内的其他线程通信 |
编程容易度 |
多进程间耦合性较小,比较容易 |
线程间耦合度较大,共享全局变量,需要考虑关键变量的互斥操作 |
进程与线程
2017年8月2日
未分类
No Comments
aming
计算机上运行的程序都会有进程,你可以打开windows的进程管理器来查看系统所有的进程信息,而linux可以使用top或者ps来查看所有的进程信息。
线程是比进程还要细分的一个单元,它在进程里面,一个进程下面可以有多个线程。
下表为进程和线程的主要区别: