首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原子操作与STM

原子操作与STM
EN

Stack Overflow用户
提问于 2011-05-24 18:45:39
回答 1查看 950关注 0票数 0

我尝试了一些基准测试这两个(软件事务内存和原子操作,我猜两者都不一样),虽然我没有做太多使用STM (它似乎很难使用),但我成功地尝试了计数基准,即所有的线程都递增一个共享计数器50mn次,并注意到原子操作比STM工作得更好。

所以我想知道,由于STM还没有完全发展,它们在现实情况下比原子操作执行得更好吗?

是否有人因为性能原因而切换到另一个?请分享信息..

我在网上找到的相关期刊是 Concurrent programming without locks

附注:我使用JAVA作为编程语言。STM :-多首诗。AtomicOperatinn: AtomicInteger。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-24 19:00:45

原子操作和STM是截然不同的野兽。特别是,原子操作是非常“低级”的构造-事实上,各种类型的原子操作通常用于实现STM。基本上:

  • 是一个原子操作,它允许您对单对象进行并发安全的更新。这是简单而快速的,在现代硬件上通常只有一条指令。
  • STM允许您对multiple objects进行并发安全更新。这很复杂。

因此,STM系统需要增加额外的记账开销来管理事务更新的复杂性-因此,如果只需要更新单个对象,原子操作几乎总是更快。

此外,您应该意识到,在设计STM系统的最佳方式上没有达成共识-这是一个活跃的研究主题,涉及到许多权衡。因此,在一个STM系统上表现良好的东西可能在另一个STM系统上表现不佳,等等。

例如:我的favourite STM system at the moment is Clojure's -它特别吸引人,因为它支持多版本并发控制,并且从不阻碍读者-这在许多常见场景中提供了显着的性能优势。

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

https://stackoverflow.com/questions/6109229

复制
相关文章

相似问题

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