From e216f83f24e48485e9ccd11c923ef1b965366d3b Mon Sep 17 00:00:00 2001 From: Salikh Zakirov Date: Tue, 20 Mar 2007 21:45:52 +0300 Subject: [PATCH] With Pthreads, thread should be detached to free up resources By default, threads are created in joinable state. Since we never use os_thread_join, we can create threads in detached state instead. --- vm/thread/src/linux/os_thread.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vm/thread/src/linux/os_thread.c b/vm/thread/src/linux/os_thread.c index cea68f7..24b23c3 100644 --- a/vm/thread/src/linux/os_thread.c +++ b/vm/thread/src/linux/os_thread.c @@ -43,23 +43,23 @@ int os_thread_create(/* out */osthread_t* phandle, UDATA stacksize, UDATA priori int (VMAPICALL *func)(void*), void *data) { pthread_t thread; - pthread_attr_t attr, *pattr = NULL; + pthread_attr_t attr; int r; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + if (stacksize != 0) { - pattr = &attr; - pthread_attr_init(pattr); - r = pthread_attr_setstacksize(pattr, stacksize); + r = pthread_attr_setstacksize(&attr, stacksize); if (r) { - pthread_attr_destroy(pattr); + pthread_attr_destroy(&attr); return r; } } - r = pthread_create(&thread, pattr, (void*(*)(void*))func, data); + r = pthread_create(&thread, &attr, (void*(*)(void*))func, data); - if (pattr) - pthread_attr_destroy(pattr); + pthread_attr_destroy(&attr); if (r == 0) { *phandle = thread; -- 1.4.1.g4455