Programmieren mit Locks

...ist fehleranfällig:

Beispiel (Vorsicht, fehlerhafter Code):
überweise ( betrag :: Geld ) 
  ( quelle :: MVar Geld ) 
  ( ziel :: MVar Geld ) = do
    q <- readMVar quelle
    when ( q >= betrag ) $ do 
        modifyMVar_ quelle $ \ q -> 
            return $ q - betrag
        modifyMVar_ ziel   $ \ z -> 
            return $ z + betrag



Johannes Waldmann 2010-01-25