2012-04-11 9 views
11

¿Se llama a la parte "else" de orElse cuando se reintenta una transacción debido a otra transacción escribiendo a TVar que se leyó, o solo cuando se llama explícitamente retry?Haskell: TVar: orElse

Respuesta

10

Si tiene

OrElse a b

continuación b solamente se ejecuta si retry se llama explícitamente en a. De lo contrario, orElse esencialmente se volvería no determinista. (La reutilización de las transacciones que realiza el tiempo de ejecución de STM es transparente y no debe afectar el resultado de ningún cálculo).