module Midair.Examples.MaxToMin (
hotswapMaxToMin
) where
import Midair
import Control.Arrow
import Control.Concurrent
wait10Secs :: IO ()
wait10Secs = threadDelay (10^(7::Int))
hotswapMaxToMin :: IO ()
hotswapMaxToMin = do
showNR <- mkNodeRef $ sMap ("\nMax: "++)
compareNR <- mkNodeRef sMax
putStrLn "Getting max:"
(tid0, tid1, _wholeGraph) <- runGetChar $
sPutStrLn <<< nRef showNR <<< sMap show <<< nRef compareNR
wait10Secs
putStrLn "Changeup! Now getting min:"
atomically $ do
hotSwapSTM showNR $ \_ -> sMap ("\nMin: "++)
hotSwapSTM compareNR sMinHS
wait10Secs
mapM_ killThread [tid0, tid1]