什么是硬件同步原语?
硬件同步原语(Atomic Hardware Primitives)是由计算机硬件提供的一组原子操作。
我们常见的原语操作有CAS和FAA两种。
CAS
Compare and Swap(CAS),字面意思是先比较,再计算。它的伪代码如下。- << atomic >>
- function cas(p : pointer to int, old : int, new : int) returns bool {
- if *p ≠ old {
- return false
- }
- *p ← new
- return true
- }
复制代码 它的输入参数有三个:
- p:要修改的变量的指针
- old:旧值
- new:新值
返回值是一个布尔值,标识是否赋值成功。
FAA
Fetch and Add(FAA),它的含义是先获取变量当前的值value,然后给变量p增加inc,最后返回变量p之前的值value。
它的伪代码如下:
[code]>function faa(p : pointer to int, inc : int) returns int { int value |