我们在了解进程与线程之间的区别之前要先知道
什么是进程?什么是线程?
进程:一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。
线程:线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度 ,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。
进程与线程我们从三个方向来对比
一. 关系对比
- 线程是依附在进程里面的,没有进程就没有线程
- 一个进程默认提供一个线程,进程可以创建多个线程
二. 区别对比
- 进程之间不共享全局变量
- 线程之间共享全局变量,但要注意资源竞争问题,解决办法:互斥锁或者线程同步
- 创建进程的资源开销要比创建线程的资源开销要大
- 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位
- 线程不能够独立执行,必须依存在进程中
- 多进程开发比单进程多线程开发稳定性要强
三. 优缺点对比
-
进程优缺点:
优点: 可以用多核
缺点: 资源开销大 -
线程优缺点:
优点: 资源开销小
缺点: 不能使用多核
那么什么是并发和并行呢?
并发:不同的代码块交替执行,它是单核cpu处理多任务
并行: 不同的代码块同时执行,它是多核cpu处理多任务
举个简单的例子
并行就相当于你去车站买票,这时候有两个人要买票,刚好有两个窗口在售票,那这两个人就一人在一个窗口去买票.两人之间互不影响对吧,至于谁先买完票,谁后买完票,那就看售票员的操作效率了对吧,你也管不了,这就是并行,cpu处理多任务的时候,谁先执行,谁后执行,我们决定不了,那是cpu的事情,那个售票员呢就相当于是cpu,而买票的人呢就是要执行的任务.
而并发呢,就相当于现在有两个人买票,但只有一个窗口,那两个人就要排队买票.我得等第一个人买完票了,我才能去买票.
以上就是我的总结.感谢大家参考并评论提出意见或建议!!!