找回密码
 立即注册
首页 业界区 业界 怎么使用硬件同步原语替代锁?

怎么使用硬件同步原语替代锁?

马璞玉 2025-6-6 09:33:38
什么是硬件同步原语?

硬件同步原语(Atomic Hardware Primitives)是由计算机硬件提供的一组原子操作。
我们常见的原语操作有CAS和FAA两种。
CAS

Compare and Swap(CAS),字面意思是先比较,再计算。它的伪代码如下。
  1. << atomic >>
  2. function cas(p : pointer to int, old : int, new : int) returns bool {
  3.     if *p ≠ old {
  4.         return false
  5.     }
  6.     *p ← new
  7.     return true
  8. }
复制代码
它的输入参数有三个:

  • 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
您需要登录后才可以回帖 登录 | 立即注册