当前位置: 首页 > news >正文

网站建设税种分类wordpress 慢途网

网站建设税种分类,wordpress 慢途网,网站建设公司运营计划,网站教程制作CMPXCHG 指令和 lwarx/stwcx#xff08;LL/SC#xff09;指令是在不同体系结构中常见的原子操作指令。 CMPXCHG: CMPXCHG 是 x86 架构中用于执行原子比较并交换操作的指令。这个指令会比较某个内存位置的值与累加器中的值#xff0c;如果相等#xff0c;则将累加器中的值赋…CMPXCHG 指令和 lwarx/stwcxLL/SC指令是在不同体系结构中常见的原子操作指令。 CMPXCHG: CMPXCHG 是 x86 架构中用于执行原子比较并交换操作的指令。这个指令会比较某个内存位置的值与累加器中的值如果相等则将累加器中的值赋给该内存位置并且返回旧的内存位置的值。因此CMPXCHG 通常用于实现原子的读-改-写操作。 lwarx/stwcx (LL/SC): lwarx/stwcx 是 PowerPC 架构中用于实现类似原子操作的指令。lwarx 用于加载一个字word的值到寄存器中而 stwcx 用于尝试将新值存储回内存。如果在这次加载和存储之间没有其他处理器修改了这个内存位置则存储操作成功否则它失败。 ABA 问题 ABA 问题指的是一个共享内存区域中的值被修改两次最终回到了原始的值使得检查不到这个变化。这种情况可能会导致并发数据结构出现问题。CMPXCHG 指令在解决ABA问题上存在缺陷因为它只能检查共享内存区域的当前值是否等于预期值但无法检查这个值是否“曾经”等于预期值。这就是 ABA 问题的根源。相比之下lwarx/stwcx 指令通过使用 LL/SC 的方式可以在加载和存储之间检测共享内存区域的变化情况因此可以避免 ABA 问题的发生。 因此lwarx/stwcx 指令能够提供更强大的原子性保证从而避免了类似于 ABA 问题的并发风险。 有一种比较有效的做法是将共享内存区域的修改与版本号或标记相关联。每次对共享内存的修改都会增加版本号这样即使出现了ABA问题由于版本号已经发生了改变便可检测到这种情况。 一些库或语言提供了支持带有回退机制的CAS操作例如 Java 中的 AtomicStampedReference 类。该类允许用户为引用的目标对象附加一个整数作为版本戳并且在CAS操作失败时可以检查目标对象是否还包含相同的版本戳。 下面这个是C实现的带版本号的CAS 一种常见的方法是创建一个结构体其中包含指向数据的指针以及版本号或标记并使用原子操作来更新和比较这两个值。通过使用 std::atomic 来确保这些操作是原子的。 #include atomictemplate typename T, typename U struct StampedReference {T* pointer;U stamp; };// 使用StamedReference进行CAS操作 template typename T, typename U bool atomicCompareAndSet(std::atomicStampedReferenceT, U ref, T* expectedPointer, T* newPointer, U expectedStamp, U newStamp) {StampedReferenceT, U oldValue ref.load();if (oldValue.pointer expectedPointer oldValue.stamp expectedStamp) {StampedReferenceT, U newValue {newPointer, newStamp};return ref.compare_exchange_weak(oldValue, newValue);}return false; } 在上面的示例中我们创建了一个 StampedReference 结构体来存储指针和版本号并编写了一个模板函数 atomicCompareAndSet 来执行CAS操作。当CAS操作失败时可以检查版本戳并采取适当的行动。 CASCompare and Swap通常与循环结合使用是因为在并发环境下多个线程尝试对同一内存位置执行 CAS 操作时可能会遇到竞争条件。如果不使用循环来重试 CAS 操作那么在竞争激烈的情况下单次 CAS 操作失败后程序可能就会放弃修改这样会导致并发操作的数据一致性出现问题。 通过在循环中重试 CAS 操作可以确保在 CAS 操作成功之前不会跳出循环从而保证了原子性和一致性。这种方法被称为自旋锁因为线程会持续尝试 CAS 直到成功而不是将自己挂起等待。 当使用 atomicCompareAndSet 这样的原子操作函数时通常还需要将其放置在一个循环中以确保 CAS 操作的原子性。这种自旋方式会在多线程环境中保证正确的行为并且能够有效地避免线程切换所带来的开销。 总之即使使用了原子操作函数也仍然需要搭配使用循环以确保 CAS 操作的成功和数据的一致性。
http://www.huolong8.cn/news/272954/

相关文章:

  • 怎样建立网站卖东西wordpress5.1用什么php版本
  • 怎么自己制作个网站网站设计培训班如何
  • 手机编程网站全网普盖网站建设河南
  • 建站的好公司淄博论坛网站建设
  • 做喷绘可以在那个网站找网站建设内部流程图
  • 建设企业网站哪家好上海建设咨询网
  • 做官方网站公司网站app的区别是什么意思
  • 广州网站网站建设企业网站建设的定位
  • 网站续费收多少合适深圳市公司有哪些公司
  • 移动网站建设制作wordpress网页图片无法显示
  • 昭通做网站佛山模板建站软件
  • 在线刷关键词网站排名网站建设费摊销期限
  • 企业网站做优化哪些网站是专做合租的
  • 烟台哪儿有可以做淘宝网站的wordpress失败
  • 扬州整站seo互联网应用技术学什么
  • 下载类网站模板珠海网站设计报价
  • html5手机网站适配个人网上银行登录
  • 中国十大网站域名做网站要多少像素
  • 做网站需要注册什么类型的公司万江营销型网站建设
  • 哪个网站有做彩平的材质贴图网站设计思路作用
  • odoo 网站页面怎么做用jsp做网站需要的知识
  • 网站项目设计与制作新建的网站百度多久才会收录
  • 响应式网站 手机站图书馆网站建设情况
  • 如何才能建设出一个优秀网站百度搜索关键词排名
  • 网站建设与开发选题简历表格 个人简历电子版
  • 南通营销型网站建设嘉兴推广公司
  • 廊坊做网站公司排名win主机 wordpress 404
  • 怎样做seo网站推广企业简介宣传片视频
  • 视频网站文案网站推广的主要途径
  • 做文献综述用什么网站找别人做网站的注意事项