并发和并行、同步和异步、进程和线程的关系
先介绍一下概念,如下:
- 并发
指多个任务可以在"同一时刻"被处理,这个同一时刻并不是真正的同时进行(时间分片,让每个任务在极短的时间间隔内轮流执行),而是间隔很短,可以看作同一时刻 。 - 并行
指多个任务可以在同一时刻被处理,真正的同一时刻 - 同步
协调多个进程或线程的执行顺序,确保它们能够正确、有序地访问共享资源,避免数据冲突或不一致。在某些情况下(例如共享资源),一个任务必须等待另一个任务完成后才能继续执行,在等待过程中是阻塞的。 - 异步
和同步不同的是,异步允许在等待任务完成的同时执行其他操作,不需要等待其他任务完成(非阻塞)。 - 进程
是操作系统分配资源的基本单位,代表一个正在执行的程序实例。每个进程都有自己的地址空间、内存、文件描述符和其他资源。 不同进程之间的资源是相互独立的,都有自己独立的虚拟空间。在多进程环境下,当 CPU 从一个进程切换到另一个进程时,操作系统会保存当前进程的上下文(包括寄存器、程序计数器和栈指针等),并加载新进程的上下文。由于涉及虚拟地址空间的切换,进程上下文切换的开销通常大于线程切换。 - 线程
线程是比进程更小的调度单位,每个进程至少有一个线程。多个线程之间共享同一个进程的资源,所以速度快,但是由于共享的问题,可能会不稳定。
关系:并发和并行是任务执行的模式,进程和线程是实现手段,同步和异步是协作方式。