登录
首页 >  Golang >  Go问答

意义何在?Go 中 CompareAndSwap 返回 false 的含义

来源:stackoverflow

时间:2024-03-23 15:45:24 205浏览 收藏

Go 语言中的 CompareAndSwap 函数是一个原子操作,用于比较和交换变量的值。如果比较的值不相等,则返回 false,表示交换操作未发生。该函数用于确定自上次设置以来某个值是否已更改,如果没有更改,则可以将其设置为另一个值。

问题内容

Go源码中有很多原子操作。例如sync.Map使用了大量的原子操作,如CompareAndSwap,而CompareAndSwap返回一个bool类型的值表示是否成功。如果成功则返回 true,否则返回 false。我对这个方法有一些疑问:

  1. 如果比较的值不相等,CompareAndSwap 是否返回 false?
  2. 如果比较值相等,CompareAndSwap 会失败吗?

正确答案


正如文档所述,compareandswap 相当于:

if *addr == old {
    *addr = new
    return true
}
return false

因此,如果值不相等,则返回 false,并且交换操作未发生。这对于确定自上次设置以来某些值是否已更改非常有用,如果没有更改,请将其设置为其他值。

理论要掌握,实操不能落!以上关于《意义何在?Go 中 CompareAndSwap 返回 false 的含义》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>