RosettaCodeData/Task/Synchronous-concurrency/Haskell/synchronous-concurrency-1.hs
2023-07-01 13:44:08 -04:00

15 lines
424 B
Haskell

import Control.Concurrent
import Control.Concurrent.MVar
main =
do lineVar <- newEmptyMVar
countVar <- newEmptyMVar
let takeLine = takeMVar lineVar
putLine = putMVar lineVar . Just
putEOF = putMVar lineVar Nothing
takeCount = takeMVar countVar
putCount = putMVar countVar
forkIO $ writer takeLine putCount
reader putLine putEOF takeCount