MVar は少しシンプルに見えますが、TVar はもう少し機能が豊富ですが、TVar は非常に使いやすいと思います。
だから私の質問は非常に単純です.TVarではなくMVarに行きたいのはどのような条件ですか? トランザクションの更新が必要ないときはいつでもMVar を使用できると思いますが、それはどのようなメリットがありますか?
MVar は少しシンプルに見えますが、TVar はもう少し機能が豊富ですが、TVar は非常に使いやすいと思います。
だから私の質問は非常に単純です.TVarではなくMVarに行きたいのはどのような条件ですか? トランザクションの更新が必要ないときはいつでもMVar を使用できると思いますが、それはどのようなメリットがありますか?
MVar
TVar場合によってはより速くなる可能性がありますTVar
IORef
IO破壊的な書き込み/更新によく使用されるTVarMVarまたは をいつ使用するかについて、厳格なルールはありませんTVar。私が保護しているリソースが「行方不明」になる場合 (空ではなく、Nothingvsを考慮してくださいJust mempty) は、MVar多くの場合最も理にかなっています。リソースへの変更のアトミック ブロックを実行する必要がある場合は、TVar最適です。
TVar はより安全ですが、速度は遅くなります。
MVar はデッドロックする可能性がありますが、はるかに効率的です。
より効率的なのはIORefand atomicModifyIORef(CAS) ですが、それでできることは非常に限られています。
これは、実際には安全性とパフォーマンスのトレードオフです。TVar は完全に一般的で、非常に安全です。他のすべてはそうではなく、減少しています。