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.
§ xbt_parmap_t
Parallel map data type (opaque type)
§ e_xbt_parmap_mode_t
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
|
§ xbt_parmap_new()
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
§ xbt_parmap_destroy()
Destroys a parmap.
- Parameters
-
parmap | the parmap to destroy |
§ xbt_parmap_apply()
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 |
§ xbt_parmap_next()
Returns a next task to process.
Worker threads call this function to get more work.
- Returns
- the next task to process, or nullptr if there is no more work