From 82e164f8796d57aa78c14b20f0a750f4b40c861b Mon Sep 17 00:00:00 2001 From: steven-na Date: Sat, 15 Aug 2026 21:12:11 -0700 Subject: Threadpool timeout --- src/threadpool.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/threadpool.h') diff --git a/src/threadpool.h b/src/threadpool.h index b009008..190f971 100644 --- a/src/threadpool.h +++ b/src/threadpool.h @@ -14,13 +14,15 @@ typedef struct { // Threads check this before waiting for a job b32 is_running; // Write mutex for num_active/alive -pthread_mutex_t * count_mtx; +pthread_mutex_t * access_mtx; // Signal to tp_wait that all jobs are complete pthread_cond_t *done_signal; // Threads currently doing a job u64 num_active; // Threads who are alive u64 num_alive; +// Forceful teardown status + b32 is_abandoned; // Job queue ts_deque_t jobs; } thread_pool_t; @@ -30,7 +32,12 @@ thread_pool_t *tp_create(smrt_arena_t * arena , u64 max_jobs , u64 num_threads); -i32 tp_destroy(thread_pool_t *tp); +// Pass INT32_MAX for infinite timeout +// May return ETIMEDOUT, in which case, +// *tp should not be deallocaed until +// the program exits. +i32 tp_destroy(thread_pool_t *tp , + i32 timeout ); i32 tp_push_job(thread_pool_t * tp , tp_job_proc job , -- cgit v1.2.3