gpt4 book ai didi

java - stm 实现问题

转载 作者:行者123 更新时间:2023-12-04 06:26:21 26 4
gpt4 key购买 nike

大家好,
在某些时候,我认为这些 stm 实现(我使用过一点点的多元宇宙......),被过度宣传了。因为在某些时候他们使用 CAS 来为他们提供操作的原子性。如果我直接使用 CAS 而不是使用这些实现怎么办?虽然我同意这些实现也可能提供其他功能,但是如果我可以获得相同的性能并且没有很多功能可以使用,那么我应该直接使用 CAS 而不是使用 multi-verse 或 scala 或其他实现吗?
嘿伙计们,当您使用那些 stm 实现而不是 CAS 时,您是否注意到任何性能提升?因为当我运行时(在 multiverse doc 和 atomicInteger JAVA 中给出) atomicCounter 我在 atomicInteger 中获得了比在 multiverse 中更好的性能。那么 _the base stm 是 CAS 吗? _

最佳答案

STM 可以建立在许多不同的同步原语之上,但 CAS 经常使用,因为它是最简单、最轻量级的选项,不会强加太多不必要的语义约束。

但是,是的,仅使用 CAS 操作将比使用执行 CAS 操作的其他操作更快。

但它们服务于不同的目的。 CAS 允许您自动更新一些选择的数据类型,STM 通常可用于任意类型。 STM 在更大的事务范围内为您提供原子性(如果您的事务修改了 4 个不同的变量,则所有 4 个变量都作为同一个原子操作提交。单个 CAS 只会以原子方式更新一个对象),并且它为您提供隔离和一致性保证'不存在于 CAS。

最终,您无法将两者进行比较。这就像将车轮与汽车进行比较。是的,车轮更小更轻,但那是因为它不提供与汽车相同的功能。

关于java - stm 实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com