-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Tiny library for concurrent computations -- -- Spawn a concurrent IO computation and later demand its result. -- Tiny API and implementation. -- -- New in version 0.3: -- -- @package spawn @version 0.3 module Control.Concurrent.Spawn -- | Spawn a concurrent computation. Produces an action which demands the -- result. Any exception from the original computation is re-thrown when -- and where the result is demanded. spawn :: IO a -> IO (IO a) -- | Two ways a computation of type IO a can end. type Result a = Either SomeException a -- | Spawn a concurrent computation. Produces an action which demands a -- Result. spawnTry :: IO a -> IO (IO (Result a)) -- | Execute a separate thread of IO for each element of a list, and -- collect results. -- -- The analogy to parMap is misleading. The concurrent execution -- of these actions is non-deterministic and can affect results. However, -- parMapIO is expected to be most useful for actions -- which do not interact. parMapIO :: (a -> IO b) -> [a] -> IO [b] -- | Execute a separate thread of IO for each element of a list. -- -- Results are discarded, but the parMapIO_ action does -- not complete until all threads have finished. parMapIO_ :: (a -> IO b) -> [a] -> IO () -- | A concurrent version of ap or (<*>) for -- IO. -- -- Spawns a thread for the right-hand action, while executing the -- left-hand action in the current thread. (|*|) :: IO (a -> b) -> IO a -> IO b -- | Given n, produces a function to wrap IO -- actions. No more than n wrapped actions will be in progress at -- one time. pool :: Int -> IO (IO a -> IO a)