hans-3.0.2: src/Hans/Buffer/Signal.hs
module Hans.Buffer.Signal where
import Control.Concurrent (MVar,newEmptyMVar,tryPutMVar,takeMVar,tryTakeMVar)
type Signal = MVar ()
newSignal :: IO Signal
newSignal = newEmptyMVar
signal :: Signal -> IO ()
signal var =
do _ <- tryPutMVar var ()
return ()
waitSignal :: Signal -> IO ()
waitSignal = takeMVar
tryWaitSignal :: Signal -> IO Bool
tryWaitSignal var =
do mb <- tryTakeMVar var
case mb of
Just () -> return True
Nothing -> return False