私はSTMを使用するプログラムをデバッグしようとしています。あなたがここに見ることができるようにThreadScopeの測定値は非常に高いCPUアクティビティを指摘されていますトランザクションが頻繁に中断しているかどうかを確認するには?
だから私は、これが頻繁に中止し、取引のために起こっているかどうかを確認しようとしています。
atomically $ do
someWork
...
`orElse` do
unsafeIOToSTM $ traceEventIO "transaction aborted!"
retry
しかし、私は、これは正しいですか、これはSTMのシナリオでデバッグするための最良の方法である場合かどうかわからないんだけど:私はテストにこのようなものを使用していたと思った最初の事。何か案は?
:それはこのような何かを提供しますあなたの代わりに
atomically
の使用する必要がありますtrackSTM
、およびdumpSTMStats :: IO()
を提供します私のアプローチでもありました。 – chiあなたはこのアプローチからどのような結果を得ましたか? –
トレースはありません。このアプローチが正しい場合、トランザクションは中止されません。 – luisgabriel