| Portability | non-portable |
|---|
Acme.Missiles
Description
The launchMissiles action, as mentioned in:
- Beautiful concurrency, by Simon Peyton Jones, to appear in "Beautiful code", ed Greg Wilson, O'Reilly 2007. http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/index.htm#beautiful
- launchMissiles :: IO ()
- withMissilesDo :: IO a -> IO a
- launchMissilesSTM :: STM ()
Documentation
Cause serious international side effects.
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