【问题标题】:Haskell: TVar: orElseHaskell: TVar: orElse
【发布时间】:2012-04-11 06:35:44
【问题描述】:
orElse 的“else”部分是在由于另一个事务写入已读取的TVar 而重试事务时调用,还是仅在显式调用retry 时调用?
【问题讨论】:
标签:
haskell
concurrency
ghc
stm
tvar
【解决方案1】:
如果你有
或者其他 a b
然后b 仅在retry 在a 中被显式调用时运行。否则orElse 基本上会变得不确定。 (由 STM 运行时完成的事务重新运行是透明的,不应影响任何计算的结果。)