diff options
| author | dgp <dgp@users.sourceforge.net> | 2016-05-10 16:03:13 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2016-05-10 16:03:13 (GMT) |
| commit | f705798ed75055121f844ffb6495de356773306f (patch) | |
| tree | 620e18d988e661349d957eb09da1777d21f4b2f9 /unix/tclUnixThrd.c | |
| parent | f816bb2a60b95431aff01e3f048b3da7353323f9 (diff) | |
| parent | 54a8b027741ac316b067f829233dc6e55ed3acdb (diff) | |
| download | tcl-f705798ed75055121f844ffb6495de356773306f.zip tcl-f705798ed75055121f844ffb6495de356773306f.tar.gz tcl-f705798ed75055121f844ffb6495de356773306f.tar.bz2 | |
merge trunk
Diffstat (limited to 'unix/tclUnixThrd.c')
| -rw-r--r-- | unix/tclUnixThrd.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 554a2dc..cf81850 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -673,7 +673,6 @@ TclpInetNtoa( */ #ifdef USE_THREAD_ALLOC -static volatile int initialized = 0; static pthread_key_t key; typedef struct allocMutex { @@ -710,6 +709,14 @@ TclpFreeAllocMutex( } void +TclpInitAllocCache(void) +{ + pthread_mutex_lock(allocLockPtr); + pthread_key_create(&key, TclpFreeAllocCache); + pthread_mutex_unlock(allocLockPtr); +} + +void TclpFreeAllocCache( void *ptr) { @@ -721,28 +728,14 @@ TclpFreeAllocCache( TclFreeAllocCache(ptr); pthread_setspecific(key, NULL); - } else if (initialized) { - /* - * Called by us in TclFinalizeThreadAlloc() during the library - * finalization initiated from Tcl_Finalize() - */ - + } else { pthread_key_delete(key); - initialized = 0; } } void * TclpGetAllocCache(void) { - if (!initialized) { - pthread_mutex_lock(allocLockPtr); - if (!initialized) { - pthread_key_create(&key, TclpFreeAllocCache); - initialized = 1; - } - pthread_mutex_unlock(allocLockPtr); - } return pthread_getspecific(key); } |
