关于C11标准中原子操作,看这篇就够了!

http://www.10tiao.com/html/216/201606/2652546071/2.html

原子操作,CPU对存储单元串行化且不可打断的访问操作

用于多线程并发对共享资源数据同步(数据一致性)的问题,替代传统基于锁的同步原语,无锁(lock-free)或无阻塞(non-blocking)算法

传统基于锁(互斥体,信号量,临界区) ,简单的CPU比如单片机,同时只有单线程执行,硬件不需要提供原子操作,只要开关中断即可完成原子修改操作

运行在多核处理器的 2 个线程,对内存共享存储单元操作,需要(从内存)加载、计算、存储(到内存) 3 个步骤,要是非原子操作情况下,要是同时都读到共享内存里的原始值,各自操作后,数据不一致了

互斥体使同时只有一个线程访问

信号量普遍用于生产消费模型,减到0时,当前线程阻塞