功能上
- 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个浏览器
- 线程,能够完成多任务,比如 一个浏览器中可以的多个网页窗口
定义的不同
- 进程
Process
:是进程实体的运行过程,系统进行资源分配合调度的一个独立单位。 - 线程
thread
:是 操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务,可与同属一个进程的其他的线程共享进程所拥有的全部资源。
区别
- 一个程序至少有一个进程,一个进程至少有一个线程。
- 线线程不能够独立执行,必须依存在进程中
- 线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高。
- 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
优缺点
进程的优点:
-
具有 封闭性 和 可再现性;
-
多道程序设计出现后,实现了程序的并发执行和资源共享,提高了 系统的效率 和 系统的资源利用率。
进程的缺点:
操作系统调度切换多个线程要比切换调度进程在速度上快的多。而且进程间 内存无法共享,通讯也比较麻烦。
线程之间由于共享进程内存空间,所以交换数据非常方便;在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
切换慢、内存不共享、通信相对麻烦、开销大。
线程的优点:
1)运行于一个进程中的多个线程,它们彼此之间使用 相同的地址空间,共享大部分数据,启动、切换花费时间小
2)线程间方便的通信机制,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便;
3)使多 CPU
系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上;
4)改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。
线程的缺点:
-
调度时, 要保存线程状态,频繁调度, 需要占用大量的机时;
-
程序设计上容易出错(线程同步问题)。
线程和进程在使用上各有优缺点:线程共享数据空间、执行开销小,但不利于资源的管理和保护;而进程正相反。
公众号
新建文件夹X
大自然用数百亿年创造出我们现实世界,而程序员用几百年创造出一个完全不同的虚拟世界。我们用键盘敲出一砖一瓦,用大脑构建一切。人们把1000视为权威,我们反其道行之,捍卫1024的地位。我们不是键盘侠,我们只是平凡世界中不凡的缔造者 。