select-0.1: Give the select(2) POSIX function a simple STM interface

Safe HaskellSafe-Infered

Control.Concurrent.STM.TMVarIO

Description

Perform an IO action, and place its result in a TMVar. See also Control.Concurrent.MVarIO for an MVar version.

Synopsis

Documentation

run :: IO a -> IO (TMVar a)Source

run action returns a TMVar immediately. The result of action will be placed in said TMVar. If the TMVar is full when action completes, the return value is lost (the action does not wait for an empty TMVar).

runOrTakeTMVar :: IO a -> TMVar b -> IO (Either a b)Source

This version of run takes an additional TMVar, and returns its content or the result of the IO action, depending on which is available first. Note that the action is not interrupted if the TMVar is the winner, so you may want to make sure it doesn't stick around forever.

The function was made to support selectOrTakeTMVar, the reason this library exists, and may not be useful outside of that context.