哈斯克尔:TVar:orElse

Cli*_*ton 12 concurrency haskell ghc stm tvar

orElse由于另一个事务写入TVar已读取的事务,或者仅在retry显式调用时,是否在重试事务时调用了"else"部分?

Pet*_*ter 11

如果你有

orElse ab

然后b只有在retry显式调用时才会运行a.否则orElse将基本上变得不确定.(重新运行由STM运行时完成的事务是透明的,不应影响任何计算的结果.)