Parallel map.
More...
Parallel map.
A function is applied to all elements of a dynar in parallel with n worker threads. The worker threads are persistent until the destruction of the parmap.
If there are more than n elements in the dynar, the worker threads are allowed to fetch themselves remaining work with xbt_parmap_next() and execute it.
Synchronization mode of the worker threads of a parmap.
Enumerator |
---|
XBT_PARMAP_POSIX |
use POSIX synchronization primitives
|
XBT_PARMAP_FUTEX |
use Linux futex system call
|
XBT_PARMAP_BUSY_WAIT |
busy waits (no system calls, maximum CPU usage)
|
XBT_PARMAP_DEFAULT |
futex if available, posix otherwise
|
Creates a parallel map object.
- Parameters
-
num_workers | number of worker threads to create |
mode | how to synchronize the worker threads |
- Returns
- the parmap created
Destroys a parmap.
- Parameters
-
parmap | the parmap to destroy |
Applies a list of tasks in parallel.
- Parameters
-
parmap | a parallel map object |
fun | the function to call in parallel |
data | each element of this dynar will be passed as an argument to fun |
Returns a next task to process.
Worker threads call this function to get more work.
- Returns
- the next task to process, or NULL if there is no more work