Safe Haskell | None |
---|
- module Control.Concurrent.Bag.Task
- newTaskBag :: TaskBufferSTM b => Maybe (SplitFunction b r) -> [Task b r (Maybe r)] -> IO [r]
- newEvalBag :: TaskBufferSTM b => Maybe (SplitFunction b r) -> [r] -> IO [r]
- type SplitFunction b r = b (IO (Maybe r)) -> b (IO (Maybe r)) -> STM (IO (Maybe r))
- takeFirst :: TaskBufferSTM b => b (IO (Maybe r)) -> b (IO (Maybe r)) -> STM (IO (Maybe r))
- splitVertical :: TaskBufferSTM b => SplitFunction b r
- splitHalf :: TaskBufferSTM b => SplitFunction b r
Documentation
module Control.Concurrent.Bag.Task
:: TaskBufferSTM b | |
=> Maybe (SplitFunction b r) | Possible split function If the function is given, we will create a bag with one buffer per worker reducing the communication between the workers. |
-> [Task b r (Maybe r)] | list of initial tasks |
-> IO [r] |
newEvalBag :: TaskBufferSTM b => Maybe (SplitFunction b r) -> [r] -> IO [r]Source
Like newTaskBag
, but it takes a list of expressions that will be
evaluated to weak head normal form using seq
.
__WARNING__: This does not evaluate to normal form, but only to weak head normal form.
splitVertical :: TaskBufferSTM b => SplitFunction b rSource
splitHalf :: TaskBufferSTM b => SplitFunction b rSource