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
Launching missiles in the
Perform initialization needed to launch missiles in the
Launch missiles within an
STM computation. Even if the memory
transaction is retried, only one salvo of missiles will be launched.
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