From 0a8bbe0ac3a45f2ff3975d4de07332b25649ba9f Mon Sep 17 00:00:00 2001 From: steven-na Date: Thu, 13 Aug 2026 14:01:01 -0700 Subject: Simple logging, started on threadpool --- src/threadpool.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/threadpool.h (limited to 'src/threadpool.h') diff --git a/src/threadpool.h b/src/threadpool.h new file mode 100644 index 0000000..121d803 --- /dev/null +++ b/src/threadpool.h @@ -0,0 +1,32 @@ +#pragma once + +#include "common.h" +#include "deque.h" +#include "smrt_arena.h" + +#include +#include + +typedef void (*tp_job_proc)(void *args); + +typedef struct { + u64 num_threads; + pthread_t *threads; + + sem_t threads_running; + ts_deque_t jobs; +} thread_pool_t; + +// Job queue will be allocated on the arena. +thread_pool_t tp_create(smrt_arena_t * arena , + u64 max_jobs , + u64 num_threads); + +i32 tp_destroy(thread_pool_t tp); + +i32 tp_push_job(thread_pool_t tp , + tp_job_proc job , + void *args); + +// Wait for all threads to finish +void tp_wait(thread_pool_t tp); -- cgit v1.2.3