module Control.Concurrent.Futures.Example01 where import qualified Control.Concurrent.Futures.Buffer as Buffer import qualified Control.Concurrent.Futures.Futures as Futures import Control.Concurrent -- local finals oneSecond = 1000000 -- | Producer Consumer example with buffers demonstrating 'Futures.withFuturesDo'. bufferExampleF:: IO () bufferExampleF = Futures.withFuturesDo bufferExample -- | Producer Consumer example with buffers. bufferExample :: IO () bufferExample = do putStrLn $ "Producer-Consumer example with buffers" b <- Buffer.newBuf Control.Concurrent.forkIO $ (writeBufferThread b) Control.Concurrent.forkIO $ (readBufferThread b) Control.Concurrent.threadDelay $ 10 * oneSecond writeBufferThread b = do Buffer.putBuf b 1 Buffer.putBuf b 2 Control.Concurrent.threadDelay oneSecond Buffer.putBuf b 3 readBufferThread b = do val <- Buffer.getBuf b putStrLn $ "read: " ++ show val Control.Concurrent.threadDelay oneSecond readBufferThread b