问题标签 [stm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 使用 Clojure STM 处理大型数据集的经验?
我需要决定是否在我参与的 Clojure 系统中使用 STM,因为系统需要将几个 GB 存储在单个 STM 参考中。
我想听听任何对使用 Clojure STM 和大型索引数据集有任何建议的人的意见,以了解他们的经验。
clojure - Clojure 中的一个引用还是多个引用?
我正在开发一个大量使用 STM 的 clojure 应用程序。通常使用一个全局参考还是使用许多较小的参考更好。每个 ref 将像在关系数据库表中一样存储数据,因此会有几个 ref。
concurrency - 使用代理来完成 STM 交易中的副作用
我知道将具有副作用的函数放在 STM 事务中通常是不好的做法,因为它们可能会被重试和调用多次。
然而,在我看来,您可以使用代理来确保只有在事务成功完成后才会执行副作用。
例如
这是好习惯吗?
有什么优点/缺点/陷阱?
clojure - 如何在 Clojure 中查看我的 STM 中的回滚次数?
如何在 Clojure 中查看我的 STM 中的回滚次数?
spring - 软件事务内存 + Spring
是否可以将 Spring 与软件事务内存集成,以便我可以在抛出异常的方法上一起回滚所有对象和数据库事务。我需要 Spring+Deuce STM 或 Spring+Multiverse STM 的可能性。我的最终目标是在抛出异常的方法上回滚对象状态和数据库状态。
clojure - STM和clojure中的alter
我正在阅读Programming Clojure这本书。在解释alter
和 STM 时,他们说如果在更改期间,Clojure 检测到来自事务外部对 ref 的更改,它将使用新值重新运行事务。如果是这种情况,我会想象您传入的更新函数需要是纯的,但文档中没有说明(并且在其他类似情况下也是如此)。
那么我的假设正确吗?如果不是,STM如何重新应用该功能?如果它是正确的,是不是你不能依靠文档告诉你什么时候可以有副作用,什么时候不能?
clojure - 在 Clojure 中,alter 和 ref-set 都会更新 STM 树吗?
我在 Clojure 代码中到处使用 refs,然后我意识到我ref-set
到处都在使用。这会破坏 STM 的变化历史吗?还是我应该alter
只使用并ref-set
初始化参考?
我不确定差异是否仅仅是语法上的,alter
最终还是会调用ref-set
。有人可以启发我吗?
java - stm实现问题
嘿,伙计们,
在某些时候,我认为这些 stm 实现(我已经使用了一点点的 multiverse ......)被过度炒作了。因为在某些时候他们使用 CAS,这为他们提供了操作的原子性。如果我直接使用 CAS 而不是使用这些实现会怎样?虽然我同意这些实现也可能提供其他功能,但是如果我可以获得相同的性能并且没有很多功能可以使用,那么我应该直接使用 CAS 而不是使用 multi-verse 或 scala 或其他实现吗?
嘿伙计们,当您使用那些 stm 实现而不是 CAS 时,您是否注意到任何性能提升?因为当我运行时(在 multiverse doc 和 atomicInteger JAVA中给出) atomicCounter 我在 atomicInteger 中获得比在 multiverse 中更好的性能。是这样吗_stm的基础是CAS?_
performance - STM 性能不佳/锁定
我正在编写一个程序,其中大量代理侦听事件并对其做出反应。由于Control.Concurrent.Chan.dupChan
不推荐使用,我决定使用 TChan 的广告。
TChan 的表现比我预想的差很多。我有以下程序可以说明该问题:
当编译(-O)并首先运行程序时,将输出如下内容:
然后,在某个时候,将停止写任何东西,同时仍然消耗 100% 的 cpu。
使用 -threaded 锁定速度更快,并且只发生在几行之后。它还将消耗通过 RTS 的 -N 标志提供的任何数量的内核。
此外,性能似乎相当差——每秒只处理大约 100 个事件。
这是STM中的错误还是我误解了STM的语义?
clojure - 可以访问 Clojure 的 STM 的价值观历史吗?
鉴于 STM 拥有 10 个 refs、agents 等值的历史记录,可以读取这些值吗?
原因是,我正在更新大量代理,并且需要保留值的历史记录。如果 STM 已经保留了它们,我宁愿只使用它们。我在 API 中找不到看起来像是从 STM 历史中读取值的函数,所以我猜不是,我也无法在 java 源代码中找到任何方法,但也许我看起来不对。