diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | exit.c | 6 |
2 files changed, 9 insertions, 2 deletions
@@ -1,3 +1,8 @@ +1999-08-14 Ross Johnson <rpj@ixobrychus.canberra.edu.au> + + * exit.c (pthread_exit): Don't call pthread_self() but + get thread handle directly for efficiency. + 1999-08-12 Ross Johnson <rpj@ixobrychus.canberra.edu.au> * private.c (_pthread_threadStart): ei[] only declared if _MSC_VER. @@ -51,7 +51,7 @@ pthread_exit (void *value_ptr) * ------------------------------------------------------ */ { - pthread_t self = pthread_self(); + pthread_t self; /* If the current thread is implicit it was not started through pthread_create(), therefore we cleanup and end the thread @@ -60,7 +60,9 @@ pthread_exit (void *value_ptr) which will cleanup and end the thread for us. */ - if (self->implicit) + self = (pthread_t) pthread_getspecific (_pthread_selfThreadKey); + + if (self == NULL || self->implicit) { _pthread_callUserDestroyRoutines(self); |