-- |Build a 'SampleVar' with an initial value.
newSampleVar :: a -> IO (SampleVar a)
newSampleVar a = do
- v <- newEmptyMVar
- putMVar v a
+ v <- newMVar a
newMVar (1,v)
-- |If the SampleVar is full, leave it empty. Otherwise, do nothing.
emptySampleVar v = do
(readers, var) <- takeMVar v
if readers > 0 then do
- takeMVar var
+ _ <- takeMVar var
putMVar v (0,var)
else
putMVar v (readers,var)