From 135d6f060c5e5232311af77bd0d0f500e861290c Mon Sep 17 00:00:00 2001 From: rpj Date: Mon, 15 Feb 2010 14:13:58 +0000 Subject: Comments and code style changes --- global.c | 2 +- implement.h | 3 +++ pthread_join.c | 4 ++-- pthread_win32_attach_detach_np.c | 10 ++++++++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/global.c b/global.c index 2b55422..e92b8f1 100644 --- a/global.c +++ b/global.c @@ -49,7 +49,7 @@ pthread_cond_t ptw32_cond_list_tail = NULL; int ptw32_concurrency = 0; -/* What features have been auto-detaected */ +/* What features have been auto-detected */ int ptw32_features = 0; BOOL ptw32_smp_system = PTW32_TRUE; /* Safer if assumed true initially. */ diff --git a/implement.h b/implement.h index cf3c7f4..69930ef 100644 --- a/implement.h +++ b/implement.h @@ -151,6 +151,9 @@ struct ptw32_thread_t_ int implicit:1; void *keys; void *nextAssoc; +#ifdef _POSIX_CXX09_EXTENSIONS + int refs; /* C++ Thread Support Library extension */ +#endif }; diff --git a/pthread_join.c b/pthread_join.c index 72a3a74..3804327 100644 --- a/pthread_join.c +++ b/pthread_join.c @@ -104,7 +104,7 @@ pthread_join (pthread_t thread, void **value_ptr) LeaveCriticalSection (&ptw32_thread_reuse_lock); - if (result == 0) + if (0 == result) { /* * The target thread is joinable and can't be reused before we join it. @@ -124,7 +124,7 @@ pthread_join (pthread_t thread, void **value_ptr) /* * Pthread_join is a cancelation point. * If we are canceled then our target thread must not be - * detached (destroyed). This is guarranteed because + * detached (destroyed) by us. This is guarranteed because * pthreadCancelableWait will not return if we * are canceled. */ diff --git a/pthread_win32_attach_detach_np.c b/pthread_win32_attach_detach_np.c index 7911fe1..5bbd925 100644 --- a/pthread_win32_attach_detach_np.c +++ b/pthread_win32_attach_detach_np.c @@ -283,7 +283,7 @@ pthread_win32_thread_detach_np () */ ptw32_thread_t * sp = (ptw32_thread_t *) pthread_getspecific (ptw32_selfThreadKey); - if (sp != NULL) // otherwise Win32 thread with no implicit POSIX handle. + if (sp != NULL) { ptw32_callUserDestroyRoutines (sp->ptHandle); @@ -291,10 +291,16 @@ pthread_win32_thread_detach_np () sp->state = PThreadStateLast; /* * If the thread is joinable at this point then it MUST be joined - * or detached explicitly by the application. + * or detached explicitly by the application because it's + * detachState cannot be changed from this point on. */ (void) pthread_mutex_unlock (&sp->cancelLock); + /* + * No race condition here because detachState will not be changed + * elsewhere now that thread state is PThreadStateLast (set above + * behind mutex). + */ if (sp->detachState == PTHREAD_CREATE_DETACHED) { ptw32_threadDestroy (sp->ptHandle); -- cgit v1.2.3