【发布时间】:2022-09-25 03:43:54
【问题描述】:
我试图理解“比较和交换”操作,简称为 CAS。我发现它有一个名为“比较和设置”的变体。它们的工作方式相同,但回报不同。 \'Compare And Swap\' 返回一个值,但 \'Compare And Set\' 返回一个布尔值。
我的问题是他们是否在低级别使用相同的比较和交换(CMPXCHG for x86)指令。它们都是由 Java 中的原子类实现的吗?
-
使用比较和交换很容易模拟比较和设置,但反之则不然。怀疑Java为了可移植性而省略了比较和交换,但它是用x86上的CMPXCHG实现的(这是最明显的方法)。
-
BTS 是 x86 上的测试和设置指令,但它仅适用于位。它确实适用于原子功能的 LOCK 前缀。
标签: java algorithm assembly compare-and-swap