module Control.Concurrent.Futures.Example05 where import qualified Control.Concurrent.Futures.HQSem as HQSem import qualified Control.Concurrent.Futures.Futures as Futures import Control.Concurrent -- local finals oneSecond = 1000000 -------------------------------------------------------------------------------- -- | Scenario Example for quantity semaphores using 'Futures.withFuturesDo'. hqsemExampleF :: IO () hqsemExampleF = Futures.withFuturesDo hqsemExample -- | Scenario Example for for quantity semaphores. hqsemExample :: IO () hqsemExample = do putStrLn $ "Scenario example with quantity semaphores" qsem <- HQSem.newHQSem 1 Control.Concurrent.forkIO $ (useQSem qsem) Control.Concurrent.forkIO $ (useQSem qsem) Control.Concurrent.threadDelay $ 10 * oneSecond useQSem :: HQSem.HQSem -> IO () useQSem q = do HQSem.downHQSem q putStrLn $ "Entered."-- ++ show Control.Concurrent.myThreadId Control.Concurrent.threadDelay $ 2 * oneSecond HQSem.upHQSem q