进程和线程
1. 进程
- 进程是计算机中的一个独立执行单元,每个进程都有自己独立的内存空间、代码和数据,是系统进行资源分配的最小单位
- 进程之间是相互隔离的,一个进程的崩溃通常不会影响其它进程
- 进程之间通信较为复杂,通常需要使用进程间通信(Inter-Process Communication,IPC)机制,如管道、消息队列、共享内存等
- 创建和销毁进程的开销相对较大
2. 线程
- 线程是进程内的一个执行单元,一个进程可以包含多个线程,它们共享相同的内存空间和数据,是调度执行的最小单元
- 线程之间相互共享资源,一个线程的崩溃可能会影响整个进程
- 线程之间通信相对简单,因为它们共享相同的内存,可以直接访问共享数据
- 创建和销毁线程的开销较小
3. 对比
- 内存和资源隔离:进程之间相互隔离,每个进程有自己独立的内存空间和资源,而线程共享同一进程的内存空间和资源
- 切换开销:进程切换的开销较大,因为需要切换整个上下文,包括内存空间、寄存器等;线程切换的开销较小,因为只需切换部分上下文
- 通信复杂性:进程之间通信较为复杂,需要使用特定的通信机制;线程之间通信相对简单,可以直接读写共享内存
- 创建销毁开销:创建和销毁进程的开销较大,包括内存分配、资源初始化等;创建和销毁线程的开销较小
补充
并发和并行
- 并发:指在同一时间段内,多个任务在交替执行,但实际上在任意时刻只有一个任务在执行
- 并行:指在同一时刻,多个任务真正地同时执行,通常需要具备多个处理单元(例如多核处理器)来实现
同步和异步
- 同步:需要等待结果返回,才能继续运行就是同步
- 异步:不需要等待结果返回,就能继续运行就是异步