| ︙ | | | ︙ | |
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
} else {
if (flags & TCL_THREAD_JOINABLE) {
TclRememberJoinableThread(*idPtr);
}
/*
* The only purpose of this is to decrement the reference count so the
* OS resources will be reaquired when the thread closes.
*/
CloseHandle(tHandle);
LeaveCriticalSection(&joinLock);
return TCL_OK;
}
}
|
|
|
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
} else {
if (flags & TCL_THREAD_JOINABLE) {
TclRememberJoinableThread(*idPtr);
}
/*
* The only purpose of this is to decrement the reference count so the
* OS resources will be reacquired when the thread closes.
*/
CloseHandle(tHandle);
LeaveCriticalSection(&joinLock);
return TCL_OK;
}
}
|
| ︙ | | | ︙ | |
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
|
*
* TclpMasterLock
*
* This procedure is used to grab a lock that serializes creation of
* mutexes, condition variables, and thread local storage keys.
*
* This lock must be different than the initLock because the initLock is
* held during creation of syncronization objects.
*
* Results:
* None.
*
* Side effects:
* Acquire the master mutex.
*
|
|
|
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
|
*
* TclpMasterLock
*
* This procedure is used to grab a lock that serializes creation of
* mutexes, condition variables, and thread local storage keys.
*
* This lock must be different than the initLock because the initLock is
* held during creation of synchronization objects.
*
* Results:
* None.
*
* Side effects:
* Acquire the master mutex.
*
|
| ︙ | | | ︙ | |
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
|
* This procedure is invoked to lock a mutex. This is a self initializing
* mutex that is automatically finalized during Tcl_Finalize.
*
* Results:
* None.
*
* Side effects:
* May block the current thread. The mutex is aquired when this returns.
*
*----------------------------------------------------------------------
*/
void
Tcl_MutexLock(
Tcl_Mutex *mutexPtr) /* The lock */
|
|
|
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
|
* This procedure is invoked to lock a mutex. This is a self initializing
* mutex that is automatically finalized during Tcl_Finalize.
*
* Results:
* None.
*
* Side effects:
* May block the current thread. The mutex is acquired when this returns.
*
*----------------------------------------------------------------------
*/
void
Tcl_MutexLock(
Tcl_Mutex *mutexPtr) /* The lock */
|
| ︙ | | | ︙ | |
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
|
*
* The mutex must be held when this procedure is called.
*
* Results:
* None.
*
* Side effects:
* May block the current thread. The mutex is aquired when this returns.
* Will allocate memory for a HANDLE and initialize this the first time
* this Tcl_Condition is used.
*
*----------------------------------------------------------------------
*/
void
|
|
|
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
|
*
* The mutex must be held when this procedure is called.
*
* Results:
* None.
*
* Side effects:
* May block the current thread. The mutex is acquired when this returns.
* Will allocate memory for a HANDLE and initialize this the first time
* this Tcl_Condition is used.
*
*----------------------------------------------------------------------
*/
void
|
| ︙ | | | ︙ | |