void Tcl_MutexFinalize( Tcl_Mutex *mutexPtr) { #ifdef TCL_THREADS TclpFinalizeMutex(mutexPtr); #endif TclpMasterLock(); ForgetSyncObject((char *) mutexPtr, &mutexRecord); TclpMasterUnlock(); }
void Tcl_ConditionFinalize( Tcl_Condition *condPtr) { #ifdef TCL_THREADS TclpFinalizeCondition(condPtr); #endif TclpMasterLock(); ForgetSyncObject((char *) condPtr, &condRecord); TclpMasterUnlock(); }
void TclMutexUnlockAndFinalize( Tcl_Mutex *mutexPtr) { Tcl_Mutex mutex; TclpMasterLock(); TclpMutexLock(); #ifdef TCL_THREADS mutex = *mutexPtr; *mutexPtr = NULL; /* Force it to be created again. */ Tcl_MutexUnlock(&mutex); TclpFinalizeMutex(&mutex); #endif ForgetSyncObject(mutexPtr, &mutexRecord); TclpMutexUnlock(); TclpMasterUnlock(); }