Windows CE supports preemptive multitasking. Multitasking operating systems must ensure that processes and threads are synchronized. Windows CE provides many ways to coordinate multiple threads of execution. For example, you can use wait functions and synchronization objects. You pass a synchronization object as a parameter to a wait function. The wait function does not return until its specified criteria has been met. The type of wait function determines the set of criteria used. When a wait function is called, it checks whether the wait criteria has been met. If the criteria has not been met, the calling thread enters an efficient wait state, consuming very little processor time.