官方定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
通俗的讲:进程可以理解为我们在电脑上正在运行的一个个应用,例如:QQ,微信,LOL
官方定义:线程是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中的实际运作单位。
通俗的讲:进程是一座正在运作的工厂,那么线程就是工厂里面的生产线,生产线包含在工厂中,是工厂中的实际运作单位。
进程与线程本来就是两个不同的概念,为什么要谈区别呢?因为在不了解它们之前是难以区分它们两者的,那它们的不同之处有哪些?
**1.直观理解:**上面提到的:进程就像工厂,线程就像生产线。
**2.系统角度:**官方概念提到的:进程是分配资源的基本单位,线程是CPU调度执行的基本单位。
3.进程和进程之间具有独立性,它们具有各自的虚拟地址空间和文件描述符;但是同一个进程的多个线程之间是共享同一份虚拟空间地址和文件描述符的。
什么意思呢?也就是说多个进程之间一般是不会相互影响对方的,但是在一个进程的多个线程之间是可以相互影响彼此的
在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,这就构成了多线程。
并发是多个线程同时执行(可以直观地这么理解,实际上是CPU在多个线程之间来回地切换执行,速度之快让我们以为它们在同时进行)。
通俗地讲:一个进程的多个线程并发执行就像我们我们在QQ这个进程中,可以一边和一个女孩儿视频聊天(线程1),一边在消息框发消息(线程2),一边和另外一个女孩儿发消息(线程三)。(只是这么理解并发,实际上面的操作并不是线程操作)。