signalAllImpl :: Lock -> IO ()
signalAllImpl lock = mask_ $ do
  -- Considered using readMVar, but don't want to allow
  -- conditions to be concurrently added while signalling?
  conds <- takeMVar $ lockConditions lock
  V.forM_ (conditions conds) (flip tryPutMVar ())
  putMVar (lockConditions lock) conds
signalAllImpl :: Lock -> IO ()
signalAllImpl lock = mask_ $ do
  -- Considered using readMVar, but don't want to allow
  -- conditions to be concurrently added while signalling?
  conds <- takeMVar $ lockConditions lock
  V.forM_ (conditions conds) (flip tryPutMVar ())
  putMVar (lockConditions lock) conds
signalAllImpl lock = mask_ $ do
  -- Considered using readMVar, but don't want to allow
  -- conditions to be concurrently added while signalling?
  conds <- takeMVar $ lockConditions lock
  V.forM_ (conditions conds) (flip tryPutMVar ())
  putMVar (lockConditions lock) conds