diff options
| author | gingerBill <bill@gingerbill.org> | 2022-12-20 14:08:24 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-12-20 14:08:24 +0000 |
| commit | 134c7db4d21e80751833ed45fb4ace5d0ae3b7d2 (patch) | |
| tree | 0f6785c36d42766631c42d5d31088541e7024b35 /src | |
| parent | a0e3a99dd165858136dd0d60759b08b22f81cfa2 (diff) | |
Combine join and destroy for threads
Diffstat (limited to 'src')
| -rw-r--r-- | src/thread_pool.cpp | 9 | ||||
| -rw-r--r-- | src/threading.cpp | 10 |
2 files changed, 4 insertions, 15 deletions
diff --git a/src/thread_pool.cpp b/src/thread_pool.cpp index ba150bb6f..a1ee11523 100644 --- a/src/thread_pool.cpp +++ b/src/thread_pool.cpp @@ -57,14 +57,9 @@ gb_internal void thread_pool_destroy(ThreadPool *pool) { for_array(i, pool->threads) { Thread *t = &pool->threads[i]; - thread_join(t); + thread_join_and_destroy(t); } - - for_array(i, pool->threads) { - Thread *t = &pool->threads[i]; - thread_destroy(t); - } - + gb_free(pool->allocator, pool->threads.data); mutex_destroy(&pool->mutex); condition_destroy(&pool->task_cond); diff --git a/src/threading.cpp b/src/threading.cpp index 30e9071d8..e92ed5e31 100644 --- a/src/threading.cpp +++ b/src/threading.cpp @@ -61,8 +61,7 @@ gb_internal u32 thread_current_id(void); gb_internal void thread_init_and_start (Thread *t, ThreadProc *proc, void *data); gb_internal void thread_init_and_start_with_stack(Thread *t, ThreadProc *proc, void *data, isize stack_size); -gb_internal void thread_destroy (Thread *t); -gb_internal void thread_join (Thread *t); +gb_internal void thread_join_and_destroy(Thread *t); gb_internal bool thread_is_running (Thread const *t); gb_internal void thread_set_name (Thread *t, char const *name); @@ -326,11 +325,6 @@ gb_internal gb_inline void yield(void) { #endif } -gb_internal void thread_destroy(Thread *t) { - thread_join(t); -} - - gb_internal void private__thread_run(Thread *t) { t->return_value = t->proc(t); } @@ -390,7 +384,7 @@ gb_internal void thread_init_and_start_with_stack(Thread *t, ThreadProc *proc, v #endif } -gb_internal void thread_join(Thread *t) { +gb_internal void thread_join_and_destroy(Thread *t) { if (!t->is_running.load()) { return; } |