問題タブ [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を使用するかどうかを決定する必要があります。これは、単一のSTM refに数GBを格納する必要があるシステムです。
Clojure STM を大規模なインデックス付きデータセットで使用する際のアドバイスがあれば、その経験を聞いてみたいと思います。
clojure - Clojure の 1 つの参照または複数の参照?
STM を多用する clojure アプリケーションを開発しています。一般に、1 つのグローバル ref を使用するか、より小さな ref を多数使用する方がよいでしょうか。各参照はリレーショナル データベース テーブルのようにデータを格納するため、複数の参照が存在します。
concurrency - STM トランザクションの副作用を完了するためのエージェントの使用
副作用のある関数を STM トランザクション内に配置することは、一般的に悪い習慣であることを認識しています。これらの関数は、再試行され、複数回呼び出される可能性があるためです。
ただし、エージェントを使用して、トランザクションが正常に完了した後にのみ副作用が実行されるようにすることができると思います。
例えば
これは良い習慣ですか?
長所/短所/落とし穴は何ですか?
clojure - ClojureのSTMでのロールバックの数を確認するにはどうすればよいですか?
ClojureのSTMでのロールバックの数を確認するにはどうすればよいですか?
spring - ソフトウェアトランザクショナルメモリ+Spring
SpringをSoftwareTransactionalMemoryと統合して、例外をスローするメソッドですべてのオブジェクトとDBトランザクションを一緒にロールバックできるようにすることは可能ですか。Spring +DeuceSTMまたはSpring+MultiverseSTMの可能性が必要です。私の最終的な目標は、例外をスローするメソッドでオブジェクトの状態とDBの状態をロールバックすることです。
clojure - STMとclojureでの変更
私はProgrammingClojureの本を読んでいます。とSTMを説明alter
している間、彼らは、変更中に、Clojureがトランザクションの外部からrefへの変更を検出した場合、新しい値でトランザクションを再実行すると言います。その場合、渡す更新関数は純粋である必要があると思いますが、それはドキュメントには示されていません(他の同様の状況でも同様です)。
だから私の仮定は正しいですか?そうでない場合、STMはどのように機能を再適用しますか?それが正しければ、いつ副作用が発生する可能性があるのか、いつ発生しないのかをドキュメントに頼ることができないのは事実ですか?
clojure - Alterとref-setの両方がClojureのSTMツリーを更新しますか?
Clojureコードのどこでもrefを使用していますが、ref-set
どこでも使用していることに気付きました。これはSTMの変更の履歴を破壊しますか?または、参照alter
のみを使用して初期化する必要がありますか?ref-set
違いが単に構文的なものであり、とにかくalter
呼び出してしまうのかどうかはわかりませref-set
ん。誰かが私を啓発できますか?
java - stm implementations issues
Hey guys,
At some point i think that these stm implementation ( multiverse which i have used a little bit... ), are over-hyped. Because at some point they uses CAS which is providing them atomicity of operations. What if i use CAS directly instead of using these implementation ? Though i agree that these implementation might be providing others features too, but If i can gain same performance and don't have a lot of features to use then should i use CAS directly instead of using multi-verse or scala or other implementations ?
Hey guys have you noticed any performance gain when you use those stm implementation than CAS ? since when i run ( given in multiverse doc and in atomicInteger JAVA) atomicCounter i gain better performance in atomicInteger than in multiverse. So is it like _the base of stm is CAS ? _
performance - パフォーマンスの低下/STMによるロックアップ
私は、多数のエージェントがイベントをリッスンしてそれに反応するプログラムを書いています。非推奨になっているためControl.Concurrent.Chan.dupChan
、宣伝どおりにTChanを使用することにしました。
TChanのパフォーマンスは私が予想していたよりもはるかに悪いです。この問題を説明する次のプログラムがあります。
コンパイル(-O)してプログラムを最初に実行すると、次のように出力されます。
そして、ある時点で、100%CPUを消費しながら、何かを書くのをやめます。
-threadedを使用すると、ロックアップはさらに高速になり、ほんの数行後に発生します。また、RTSの-Nフラグを介して利用できるコアの数も消費します。
さらに、パフォーマンスはかなり悪いようです。1秒あたり約100のイベントのみが処理されます。
これはSTMのバグですか、それともSTMのセマンティクスについて何か誤解していますか?
clojure - Clojure の STM の値の履歴にアクセスできますか?
STM が参照、エージェントなどの 10 個の値の履歴を保持している場合、それらの値を読み取ることができますか?
その理由は、大量のエージェントを更新していて、値の履歴を保持する必要があるためです。STM がすでにそれらを保持している場合は、そのまま使用したいと思います。STM履歴から値を読み取ったように見える関数がAPIに見つからないので、Javaソースコードにメソッドが見つからないのではないかと思いますが、正しく見えなかったのかもしれません。