硬件同步原语

本文介绍了两种硬件同步原语——CAS(Compare and Swap)和FAA(Fetch And Add),它们在多线程编程中确保操作的原子性。CAS通过比较并交换变量值,FAA则实现对变量的原子增加。这两种原语由CPU直接支持,能够在并发环境下保证操作的不可分割性,是构建高效并发算法的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬件同步原语

  • CAS先比较,再交换。
  • 比较一下变量p当前的值是不是等于old,如果等于,就把变量p赋值为new,并返回true,否则就不改变变量p,并返回false。
<< atomic >>
function cas(p : pointer to int, old : int, new : int) returns bool {
    if *p ≠ old {
        return false
    }
    *p ← new
    return true
}
  • FAA先获取变量p的当前值value,然后给变量p增加inc,最后返回变量p之前的值value。

<< atomic >>
function faa(p : pointer to int, inc : int) returns int {
    int value <- *location
    *p <- value + inc
    return value
}
  • 上面的这两段伪代码,如果我们用编程语言来实现,肯定是无法保证原子性的。而原语的特殊之处就是,它们都是由计算机硬件,具体说就是 CPU 提供的实现,可以保证操作的原子性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值