TVarを使用してWebアプリケーションに状態を保存することを検討しています(再起動時に再作成できます)。ただし、TVar の競合の側面が気になります。実行時間の短いトランザクションが頻繁に発生すると、継続的にトランザクションが中断されるため、長時間のトランザクションが不足する可能性があるようです。また、実行時間の長いトランザクションが再起動し続けると、CPU の負荷が増加し、これらのトランザクションの長さがさらに長くなる傾向があります。最終的に、これによりサーバーが完全に応答しなくなる可能性があると思います。
これを考慮して、私はこれらの質問があります:
(1) TVar (または別のデータ型) は、同時試行/再試行ではなく、ロックを使用できますか。
(2) TVar (または別のデータ型) は、いくつかの異なる競合メカニズム、つまり「トランザクションを別のトランザクションを実行する前に 1 秒間実行させる」、または少なくともトランザクションが最終的に完了することを保証する (つまり、リソース不足を防ぐ競合アルゴリズム) を持つことができますか?実行時間の長いトランザクション)。