Control.Concurrent.Pulse

data Pulse

newPulse

destroyPulse

withPulse

waitForPulse