The functions InterlockedDecrement, InterlockedExchange, and InterlockedIncrement provide a simple mechanism for synchronizing access to a variable that is shared by multiple threads. The threads of different processes can use this mechanism, if the variable is in shared memory.
The InterlockedIncrement and InterlockedDecrement functions combine the operations of incrementing or decrementing the shared variable and checking the resulting value. This atomic operation is useful in a multitasking operating system, in which the system can interrupt one thread's execution to grant a slice of processor time to another thread. Without such synchronization, one thread could increment a variable, but be interrupted by the system before it can check the resulting value of the variable. A second thread could then increment the same variable. In this scenario, when the first thread receives its next time slice, it checks the value of the variable, which has now been incremented not once, but twice. The interlocked variable-access functions of Windows CE protect against this kind of error. The InterlockedExchange function atomically exchanges the values of the specified variables.