我正在尝试这两个基准测试(软件事务内存和原子操作,我猜两者都不一样),虽然我没有做太多使用STM(似乎很难使用),但我成功地尝试计算基准,即所有的线程将共享计数器递增50,000次,并注意到原子操作比STM更好。
所以我想知道,因为STM没有完全开发,它们在现实情况下是否比原子操作表现良好?
有一个人因为表现而转向其他人吗?请分享信息..
我在网上找到的相关期刊是 Concurrent programming without locks
P.S。我使用JAVA作为编程语言。 STM: - 多节。 AtomicOperatinn:AtomicInteger。
答案 0 :(得分:8)
原子操作和STM是非常不同的野兽。特别是,原子操作是很多“低级”构造 - 事实上,各种原子操作通常用于实现 STM。基本上是:
此外,您应该意识到对于设计STM系统的最佳方法没有达成共识 - 这是一个活跃的研究课题,并且涉及许多权衡。因此,在一个STM系统上表现良好的可能在另一个STM系统等上表现不佳。
例如:my favourite STM system at the moment is Clojure's - 它特别吸引人,因为它支持多版本并发控制,并且永远不会阻碍读者 - 这在许多常见场景中都具有显着的性能优势。