线程与进程

总结

进程和线程都是对 CPU 的工作时间段的描述

进程

1. 是 CPU 包含上下文切换的程序执行时间总和

2. 是资源竞争的基本单位,比如竞争 CPU 的调度,以及申请内存(物理地址空间)

进程时间

= CPU 加载上下文 + CPU 执行 + CPU 保存上下文

线程

1. 是共享了进程的上下文环境的,更为细小的 CPU 时间段

2. 是程序运行的最小单位,是进程的分流(一个进程至少有一个线程)

3. 同一个进程的多个线程之间会共享进程的数据,如果多个线程同时访问进程的数据资源就可能会存在线程冲突(解决办法:互斥锁。这个有时候会出现`死锁``饥饿现象`),

互斥锁

1. 定义:对共享数据的对象添加的,用来保证任意时刻只能有一个线程访问该对象的标记

2. 用于保证共享数据操作的完整性

锁操作

包括: 加锁解锁测试加锁

无论那种类型的锁,都无法同事让两个不同的线程访问得到被锁数据,都要等待解锁