module Control.Concurrent.Futures.Example03 where import qualified Control.Concurrent.Futures.QSem as QSem import qualified Control.Concurrent.Futures.Futures as Futures import Control.Concurrent -- local finals oneSecond = 1000000 -------------------------------------------------------------------------------- -- | Scenario Example for quantity semaphores using 'Futures.withFuturesDo'. qsemExampleF :: IO () qsemExampleF = Futures.withFuturesDo qsemExample -- | Scenario Example for for quantity semaphores. qsemExample :: IO () qsemExample = do putStrLn $ "Scenario example with quantity semaphores" qsem <- QSem.newQSem 1 Control.Concurrent.forkIO $ (useQSem qsem) Control.Concurrent.forkIO $ (useQSem qsem) Control.Concurrent.threadDelay $ 10 * oneSecond useQSem ::QSem.QSem -> IO () useQSem q = do QSem.down q putStrLn $ "Entered."-- ++ show Control.Concurrent.myThreadId Control.Concurrent.threadDelay $ 2 * oneSecond QSem.up q