| Safe Haskell | Safe-Infered |
|---|
Acme.Missiles.STM
- withMissilesDo :: IO a -> IO a
- launchMissilesSTM :: STM ()
Launching missiles in the STM monad
withMissilesDo :: IO a -> IO aSource
Perform initialization needed to launch missiles in the STM monad.
launchMissilesSTM :: STM ()Source
Launch missiles within an STM computation. Even if the memory
transaction is retried, only one salvo of missiles will be launched.
Example:
import Acme.Missiles
import Control.Concurrent
import Control.Concurrent.STM
main :: IO ()
main = withMissilesDo $ do
xv <- atomically $ newTVar (2 :: Int)
yv <- atomically $ newTVar (1 :: Int)
atomically $ do
x <- readTVar xv
y <- readTVar yv
if x > y
then launchMissilesSTM
else return ()
threadDelay 100000