原子操作与STM对比

问题描述

| 我尝试了这两个基准(软件事务内存和原子操作,我想两者都不相同),尽管我使用STM并没有做很多事情(似乎很难使用),但是我成功地尝试了对基准进行计数,即所有线程正在将共享计数器增加5000万次,并注意到原子操作的效果优于STM。 因此,我想知道由于STM尚未完全开发,它们在实际情况下的性能是否比原子操作好? 是否因为性能而将其中一个换成其他?请分享信息。  我在网上发现的相关杂志是并发编程,没有锁 附言我正在使用JAVA作为编程语言。 STM:-多诗句。 Atomicoperatinn:AtomicInteger。     

解决方法

原子操作和STM是非常不同的野兽。特别地,原子操作是许多“较低级别”的构造-实际上,通常使用各种原子操作来实现STM。基本上: 原子操作允许您对单个对象进行并发安全更新。这很容易且快速,通常只需一条关于现代硬件的指令即可。 STM允许您对多个对象进行并发安全更新。这很复杂。 因此,STM系统需要增加额外的记账开销来管理事务更新的复杂性-因此,如果您只需要更新单个对象,原子操作几乎总是会更快。 另外,您应该意识到,关于设计STM系统的最佳方法尚无共识-这是一个活跃的研究主题,涉及很多折衷。因此,在一个STM系统上执行良好的性能可能在另一STM系统上无法良好执行。 例如:目前我最喜欢的STM系统是Clojure的系统-它特别吸引人,因为它支持多版本并发控制并且从不妨碍读者使用-这在许多常见情况下都具有显着的性能优势。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...