并发指的是系统中多个任务(线程)在同一时间段内交替执行。它允许多个任务在逻辑上同时进行,但在实际的单核处理器上,这些任务是通过时间分片的方式交替执行的。
并行指的是在同一时刻有多个任务在不同的处理器核上同时执行。它利用多核处理器的能力来同时执行多个任务,以提高执行效率。
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果
并行(parallel):指在同一时刻有多条指令在多个处理器上同时执行。
来个比喻:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头。
进程:进程是系统中正在运行的一个程序,程序一旦运行就是进程。
线程:一个进程可以拥有多个线程,线程是进程的一个特定执行路径。
新建->就绪->运行->阻塞->死亡
定义: 互斥条件指的是至少有一个资源必须被持有且不能被其他线程使用,即资源在同一时刻只能被一个线程占有。如果其他线程想要使用这个资源,它们必须等待。
示例: 只有一个线程可以持有一个锁,而其他线程必须等待这个锁被释放。
定义: 占有且等待条件指的是一个线程持有至少一个资源,并且在等待获取其他资源时不会释放它已经持有的资源。
示例: 一个线程已经持有锁A,并且在等待锁B的同时不释放锁A。
定义: 非抢占条件指的是资源不能被强制从持有者手中夺走,资源只能由持有者在完成任务后自行释放。
示例: 如果线程持有某个资源,系统不会强制将资源从线程中抢占出来,而是需要线程自愿释放。
定义: 循环等待条件指的是存在一个线程集合,其中每个线程都在等待下一个线程持有的资源,形成一个循环。
示例: 线程A等待线程B持有的资源,线程B等待线程C持有的资源,线程C等待线程A持有的资源,形成一个闭环。
因篇幅问题不能全部显示,请点此查看更多更全内容