首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这种技术比较和交换是否防止并发访问相同的内存位置?

这种技术比较和交换是否防止并发访问相同的内存位置?
EN

Stack Overflow用户
提问于 2022-11-02 12:55:04
回答 1查看 45关注 0票数 2

CAS操作是否保证其他线程不会在同一时间(在进程中)访问相同的内存位置(),或者粗体文本指的是什么

https://en.wikipedia.org/wiki/Compare-and-swap

在计算机科学中,比较交换(CAS)是一种用于多线程实现同步的原子指令.它将内存位置的内容与给定值进行比较,并且只有在它们相同的情况下,才将该内存位置的内容修改为新的给定值。这是作为一个单一的原子操作。原子性保证新值是根据最新的信息计算的;如果该值同时由另一个线程更新,则写入将导致失败。操作的结果必须表明它是否执行了替换;这可以通过简单的布尔响应(此变体通常称为比较集)来完成,或者返回从内存位置读取的值(而不是写入的值)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 14:31:28

是的,你可以这样想。如果CAS成功,则保证没有其他线程写入“比较”和“交换”之间的内存位置。

有些体系结构只是在操作期间锁定内存位置(或缓存行),这样就不可能进行其他写操作。在这种架构上,CAS将永远成功。在其他体系结构(即所谓的LL/SC)上,执行CAS的核心可能只是监视内存位置,如果另一次写入发生在错误的时间,CAS将不会执行其写操作并指示失败。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74289497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档