| Critical-section function | Description |
| DeleteCriticalSection | Releases all resources used by an unowned critical section object. |
| EnterCriticalSection | Waits for ownership of the specified critical section object. |
| InitializeCriticalSection | Initializes a critical section object. |
| InitializeCriticalSectionAndSpinCount | Initializes a critical section object and sets the spin count for the critical section. |
| LeaveCriticalSection | Releases ownership of the specified critical section object. |
| SetCriticalSectionSpinCount | Sets the spin count for the specified critical section. |
| TryEnterCriticalSection | Attempts to enter a critical section without blocking. |
| Interlocked function | Description |
| InterlockedCompareExchange | Performs an atomic comparison of the specified values and exchanges the values, based on the outcome of the comparison. |
| InterlockedCompareExchangeAcquire | Functions identically to InterlockedCompareExchange except that acquire memory access semantics are used in the exchange operation. |
| InterlockedCompareExchangeAcquire64 | Functions identically to InterlockedCompareExchangeAcquire except that operations are performed on 64-bit values and addresses. |
| InterlockedCompareExchangePointer | Performs an atomic comparison of the specified values and exchange of the values, based on the outcome of the comparison. |
| InterlockedCompareExchangeRelease | Functions identically to InterlockedCompareExchange except that release memory access semantics are used in the exchange operation. |
| InterlockedCompareExchangeRelease64 | Functions identically to InterlockedCompareExchangeRelease except that operations are performed on 64-bit values and addresses. |
| InterlockedDecrement | Decrements (decreases by one) the value of the specified variable and checks the resulting value. |
| InterlockedDecrement64 | Functions identically to InterlockedDecrement except that operations are performed on 64-bit values and addresses. |
| InterlockedDecrementAcquire | Functions identically to InterlockedDecrement except that acquire memory access semantics are used in the exchange operation. |
| InterlockedDecrementRelease | Functions identically to InterlockedDecrement except that release memory access semantics are used in the exchange operation. |
| InterlockedExchange | Atomically exchanges a pair of values. |
| InterlockedExchangeAcquire64 | Functions identically to InterlockedExchange except that acquire memory access semantics are used in the exchange operation and it processes 64-bit values and addresses. |
| InterlockedExchangeAdd | Performs an atomic addition of an increment value to an addend variable. |
| InterlockedExchangePointer | Atomically exchanges a pair of values. |
| InterlockedFlushSList | Removes all items from a singly linked list. |
| InterlockedIncrement | Increments (increases by one) the value of the specified variable and checks the resulting value. |
| InterlockedIncrement64 | Functions identically to InterlockedIncrement except that operations are performed on 64-bit values and addresses. |
| InterlockedIncrementAcquire | Functions identically to InterlockedIncrement except that acquire memory access semantics are used in the exchange operation. |
| InterlockedIncrementRelease | Functions identically to InterlockedIncrement except that release memory access semantics are used in the exchange operation. |
| InterlockedPopEntrySList | Removes an item from the front of a singly linked list. |
| InterlockedPushEntrySList | Inserts an item at the front of a singly linked list. |
| Wait function | Description |
| MsgWaitForMultipleObjects | Returns when the specified criteria for the specified objects is met. |
| MsgWaitForMultipleObjectsEx | Returns when the specified criteria for the specified objects is met. |
| RegisterWaitForSingleObject | Directs a wait thread in the thread pool to wait on the object. |
| SignalObjectAndWait | Allows the caller to atomically signal an object and wait on another object. |
| UnregisterWait | Cancels a registered wait operation. |
| UnregisterWaitEx | Cancels a registered wait operation. |
| WaitForMultipleObjects | Returns when the specified criteria for the specified objects is met. |
| WaitForMultipleObjectsEx | Returns when the specified criteria for the specified objects is met. |
| WaitForSingleObject | Returns when the specified criteria for the specified object is met. |
| WaitForSingleObjectEx | Returns when the specified criteria for the specified object is met. |
| WaitOrTimerCallback | Returns when the specified criteria is met. |