1.并行和并发
并行:多个事件在同一段时间内同时运行
并发:多个事件在同一段时间内是交替运行的(再微观上来说,某一时刻只有一个事件在运行),在宏观上来说,多个时间在这一段时间内都发生了
2.线程和进程
线程:线程是任务调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
进程:进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。
记忆:将单核CPU比作一个车间,将多核CPU比作多个车间(类似一座工厂),一个进程是一个正在工作的车间,多个进程是一座工厂中的多个运行的车间,一个线程是一个车间里的一个工人,一个车间可以有多个工人(一个进程可以包括多个线程),一个车间内的空间是由车间的所有工人共享的(一个进程的内存空间是共享的,每个线程都可以使用这些共享内存)。
3.线程的性质
- 原子性:即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题。
- 可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。
- 有序性:程序执行的顺序按照代码的先后顺序执行。