Thread synchronization can be separated into 3 groups as follows:
ctThrdMutexInit
Initialize a mutex.
ctThrdMutexGet
Acquire the mutex. Wait until available.
ctThrdMutexTry
Acquire the mutex immediately or return.
ctThrdMutexRel
Release the mutex, permitting other threads to contend for it.
ctThrdMutexCls
Close the mutex, making it in active.
ctThrdBlockInit
Initialize a block.
ctThrdBlockGet
Acquire the block. Wait until available or timeout expires.
ctThrdBlockWait
Wait until block is free or timeout expires. Block is NOT acquired by the thread.
ctThrdBlockRel
Release the block.
ctThrdBlockCls
Close the block, making it inactive.
ctThrdSemapInit
Initialize a semaphore.
ctThrdSemapGet
Get one unit of semap. The thread will block indefinitely until a unit of the semaphore is available.
ctThrdSemapTry
Same as ctThrdSemapGet() except that if no unit of the semaphore is available, NTIM_ERR (156) is returned immediately.
ctThrdSemapRel
Release one unit of the semaphore.
ctThrdSemapCls
Close the semaphore, making it inactive.