diff --git a/src/threadpool.c b/src/threadpool.c index 0ef69f9895d3d127a330b105ec385d97975fc82f..9a29faab652077c3c0730d81c28d345c4fbece09 100644 --- a/src/threadpool.c +++ b/src/threadpool.c @@ -252,7 +252,7 @@ void threadpool_init(struct threadpool *tp, int num_threads) { * @param N Number of elements in @c map_data. * @param stride Size, in bytes, of each element of @c map_data. * @param chunk Number of map data elements to pass to the function at a time, - * or zero to choose the number automatically. + * or #threadpool_auto_chunk_size to choose the number automatically. * @param extra_data Addtitional pointer that will be passed to the mapping * function, may contain additional data. */ @@ -278,10 +278,8 @@ void threadpool_map(struct threadpool *tp, threadpool_map_function map_function, tp->map_data_stride = stride; tp->map_data_size = N; tp->map_data_count = 0; - tp->map_data_chunk = - chunk ? chunk - : max((int)(N / (tp->num_threads * threadpool_default_chunk_ratio)), - 1); + tp->map_data_chunk = (chunk == threadpool_auto_chunk_size) ? + max((int)(N / (tp->num_threads * threadpool_default_chunk_ratio)), 1) : chunk; tp->map_function = map_function; tp->map_data = map_data; tp->map_extra_data = extra_data; diff --git a/src/threadpool.h b/src/threadpool.h index 9d19b56836330f59093933bbed5900727142f4a2..a4964ffcbb387a1e3930c3ba172cd783dd6e8123 100644 --- a/src/threadpool.h +++ b/src/threadpool.h @@ -32,6 +32,7 @@ /* Local defines. */ #define threadpool_log_initial_size 1000 #define threadpool_default_chunk_ratio 7 +#define threadpool_auto_chunk_size 0 /* Function type for mappings. */ typedef void (*threadpool_map_function)(void *map_data, int num_elements,