标签: haskell concurrency ghc stm tvar
由于另一个事务写入其已读取的TVar或仅在显式调用orElse时,重试事务时,是否调用了retry的“else”部分? / p>
TVar
orElse
retry
答案 0 :(得分:10)
如果你有
orElse a b
然后只有在b中明确调用retry时才会运行a。否则orElse基本上会变得不确定。 (重新运行由STM运行时完成的事务是透明的,不应影响任何计算的结果。)
b
a