Wird der "else" -Teil von orElse
aufgerufen, wenn eine Transaktion aufgrund einer anderen Transaktion, die auf eine TVar
geschrieben wurde, erneut gelesen wurde oder nur, wenn retry
explizit aufgerufen wird?Haskell: TVar: orElse
11
A
Antwort
10
Wenn Sie
a b OrElse
dann b
wird nur ausgeführt, wenn retry
explizit in a
genannt wird. Andernfalls würde orElse
im Wesentlichen nicht deterministisch werden. (Die erneute Ausführung von Transaktionen, die von der STM-Laufzeit ausgeführt wird, ist transparent und sollte das Ergebnis einer Berechnung nicht beeinflussen.)