X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a889c5815b75beb11f858bab68b2314c8dc724c2..d5a1db1d0b268cb9ed8f37246fd970fce7631943:/include/xbt/parmap.h diff --git a/include/xbt/parmap.h b/include/xbt/parmap.h index e941c9e2b8..f661994a00 100644 --- a/include/xbt/parmap.h +++ b/include/xbt/parmap.h @@ -6,41 +6,37 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#ifndef _XBT_THREADPOOL_H -#define _XBT_THREADPOOL_H +#ifndef _XBT_PARMAP_H +#define _XBT_PARMAP_H #include "xbt/misc.h" /* SG_BEGIN_DECL */ #include "xbt/function_types.h" +#include "xbt/dynar.h" SG_BEGIN_DECL() -/** @addtogroup XBT_threadpool - * @brief Pool of threads. +/** @addtogroup XBT_parmap + * @brief Parallel map. * - * Jobs can be queued and the dispacher process can wait for the completion - * of all jobs. - * The call to "queue job" is non-blocking except the maximum amount of - * queued jobs is reached. In that case, it will block until a job is taken - * by a worker + * A function is applied to all the elements of a dynar in parallel + * using threads. The threads are persistent until the destruction + * of the parmap object. * @{ */ /** \brief Queue data type (opaque type) */ -typedef struct s_xbt_tpool *xbt_tpool_t; +typedef struct s_xbt_parmap *xbt_parmap_t; -XBT_PUBLIC(xbt_tpool_t) xbt_tpool_new(unsigned int num_workers, - unsigned int max_jobs); +XBT_PUBLIC(xbt_parmap_t) xbt_parmap_new(unsigned int num_workers); -XBT_PUBLIC(void) xbt_tpool_queue_job(xbt_tpool_t tpool, - void_f_pvoid_t fun, - void* fun_arg); +XBT_PUBLIC(void) xbt_parmap_apply(xbt_parmap_t parmap, + void_f_pvoid_t fun, + xbt_dynar_t data); -XBT_PUBLIC(void) xbt_tpool_wait_all(xbt_tpool_t tpool); - -XBT_PUBLIC(void) xbt_tpool_destroy(xbt_tpool_t tpool); +XBT_PUBLIC(void) xbt_parmap_destroy(xbt_parmap_t parmap); /** @} */ SG_END_DECL() -#endif \ No newline at end of file +#endif