diff options
Diffstat (limited to 'src/threading/pool.h')
-rw-r--r-- | src/threading/pool.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/threading/pool.h b/src/threading/pool.h new file mode 100644 index 0000000..73655d0 --- /dev/null +++ b/src/threading/pool.h @@ -0,0 +1,38 @@ +#ifndef POOL_H +#define POOL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stddef.h> + +typedef void *(*worker_func)(void *); + +struct pool_task_t { + worker_func func; + void* arg; + int done; +}; + +struct pool_t { + int workers; + + struct pool_task_t* tasks; + struct pool_task_t* task_next; + size_t pool_size; + + int* condition; +}; + +struct pool_t* pool_init(); +void pool_free(struct pool_t*); + +void pool_submit(struct pool_t*, worker_func, void*); +void pool_complete(struct pool_t*); + +#ifdef __cplusplus +} +#endif + +#endif
\ No newline at end of file |