CAS操作是否保证其他线程不会在同一时间(在进程中)访问相同的内存位置(),或者粗体文本指的是什么?
https://en.wikipedia.org/wiki/Compare-and-swap
在计算机科学中,比较交换(CAS)是一种用于多线程实现同步的原子指令.它将内存位置的内容与给定值进行比较,并且只有在它们相同的情况下,才将该内存位置的内容修改为新的给定值。这是作为一个单一的原子操作。原子性保证新值是根据最新的信息计算的;如果该值同时由另一个线程更新,则写入将导致失败。操作的结果必须表明它是否执行了替换;这可以通过简单的布尔响应(此变体通常称为比较集)来完成,或者返回从内存位置读取的值(而不是写入的值)。
发布于 2022-11-02 14:31:28
是的,你可以这样想。如果CAS成功,则保证没有其他线程写入“比较”和“交换”之间的内存位置。
有些体系结构只是在操作期间锁定内存位置(或缓存行),这样就不可能进行其他写操作。在这种架构上,CAS将永远成功。在其他体系结构(即所谓的LL/SC)上,执行CAS的核心可能只是监视内存位置,如果另一次写入发生在错误的时间,CAS将不会执行其写操作并指示失败。
https://stackoverflow.com/questions/74289497
复制相似问题