我正在考虑使用TVar在web应用程序中存储一些状态(可以在重启时重新创建)。然而,我关心的是TVar的争用方面。看起来,频繁的短时间运行的事务可以通过不断地中断长时间的事务来使它们饿死。考虑到这一点,我有以下问题:
(1) TVar (或其他数据类型)是否可以使用锁,而不是同时尝试/重试。(2) TVar (或另一种数据类型)可以有一些不同的争用机制,即“让事务运行一秒钟,然后再运行另一个事务”,或者至少有一些保证事务最终会完成的竞争机制(即防止运行更长时间的事务的争用算法)。
> where TVar : IVar // Compilation error: TVar must be invariant but is covariant in this contextarguments can be contravariant, but not covariant但是我有一个问题