锁的作用
保障原子性
互斥,一个锁一次只能被一个线程持有,保证了临界区代码一次只能被一个线程执行,这使得临界区代码所执行的代码具有不可分割的特性,即保障了原子性
保障可见性
获取锁时刷新处理器缓存
释放锁时冲刷处理器缓存
保障有序性
注意:临界区内的内存操作依旧存在重排序
互斥,一个锁一次只能被一个线程持有,保证了临界区代码一次只能被一个线程执行,这使得临界区代码所执行的代码具有不可分割的特性,即保障了原子性
获取锁时刷新处理器缓存
释放锁时冲刷处理器缓存
注意:临界区内的内存操作依旧存在重排序