concurrent-utilities-0.1.0.0: src/Control/Concurrent/SafePrint.hs
module Control.Concurrent.SafePrint where
import Control.Concurrent.MVar
type SafePrintToken = MVar ()
createSafePrintToken :: IO SafePrintToken
createSafePrintToken = newMVar ()
safePrint :: SafePrintToken -> String -> IO ()
safePrint safePrintToken message
= do
takeMVar safePrintToken
putStr message
putMVar safePrintToken ()
safePrintLn :: SafePrintToken -> String -> IO ()
safePrintLn safePrintToken message
= do
takeMVar safePrintToken
putStrLn message
putMVar safePrintToken ()