diff options
| -rw-r--r-- | src/base/system.c | 11 | ||||
| -rw-r--r-- | src/base/system.h | 10 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/base/system.c b/src/base/system.c index 9cc7f690..2f4c5c7b 100644 --- a/src/base/system.c +++ b/src/base/system.c @@ -408,6 +408,17 @@ void thread_sleep(int milliseconds) #endif } +void thread_detach(void *thread) +{ +#if defined(CONF_FAMILY_UNIX) + pthread_detach((pthread_t)(thread)); +#elif defined(CONF_FAMILY_WINDOWS) + CloseHandle(thread); +#else + #error not implemented +#endif +} + diff --git a/src/base/system.h b/src/base/system.h index a486b89d..aab71bff 100644 --- a/src/base/system.h +++ b/src/base/system.h @@ -367,6 +367,16 @@ void thread_destroy(void *thread); */ void thread_yield(); +/* + Function: thread_detach + Puts the thread in the detached thread, guaranteeing that + resources of the thread will be freed immediately when the + thread terminates. + + Parameters: + thread - Thread to detach +*/ +void thread_detach(void *thread); /* Group: Locks */ typedef void* LOCK; |