From 5ac8f2cf70e12088640787e9ac7bf1285cb532ef Mon Sep 17 00:00:00 2001 From: Dnomd343 Date: Fri, 3 Feb 2023 17:00:20 +0800 Subject: [PATCH] feat: thread pool detach function --- main.c | 14 +++++++++----- tiny_pool.c | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/main.c b/main.c index 01485b1..1f36f7a 100644 --- a/main.c +++ b/main.c @@ -42,14 +42,18 @@ int main() { tiny_pool_submit(pool, demo_fun, (void*)&dat[7]); tiny_pool_submit(pool, demo_fun, (void*)&dat[8]); - printf("+ main: pool joining\n"); - tiny_pool_join(pool); - printf("+ main: pool join complete\n"); +// printf("+ main: pool joining\n"); +// tiny_pool_join(pool); +// printf("+ main: pool join complete\n"); -// printf("pool try exit\n"); -// tiny_pool_kill(pool); + printf("+ main: pool detach\n"); + tiny_pool_detach(pool); + printf("+ main: pool detach complete\n"); + sleep(20); // TODO: tiny pool destroy +// printf("pool try exit\n"); +// tiny_pool_kill(pool); // sleep(10); diff --git a/tiny_pool.c b/tiny_pool.c index 41c3dce..af944bb 100644 --- a/tiny_pool.c +++ b/tiny_pool.c @@ -244,3 +244,26 @@ bool tiny_pool_join(pool_t *pool) { return true; } + +void* run_pool_join(void *pool) { + + printf("run pool join from detach\n"); + + tiny_pool_join((pool_t*)pool); + + printf("pool join complete\n"); + + pthread_exit(NULL); +} + +void tiny_pool_detach(pool_t *pool) { + + pthread_t tid; + + printf("run pool detach\n"); + + pthread_create(&tid, NULL, run_pool_join, (void*)pool); + + pthread_detach(tid); + +}