caf-0.0.2: Examples/Example05.hs
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