| Safe Haskell | None |
|---|
Control.Concurrent.Bag.Implicit
- 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
Arguments
| :: 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