The CLI was designed to provide programmers with numerous design alternatives when creating components and when grouping components together into collaborative systems. Many of these have to do with using boundaries, such as processes, threads, and application domains, to package and protect component instances. To enable collaboration between components protected in this way, the PAL must not only support creating the boundaries, but also communicating across them. To complement the several kinds of isolation provided by the PAL to component implementers, the PAL also provides a rich set of synchronization primitives.
The Win32 synchronization mechanisms provided by the PAL are:
Critical sections are regions of code that are protected in such a way that only one thread at a time may enter the region and execute code.
Mutexes are locks used to protect resources that guarantee ownership by a single thread at a time. A mutex can be used by multiple processes simultaneously; one thread from one process will be given ownership at a time.
Events allow the programmer to send a message from one thread to another. Events can be used to communicate between threads in different processes.
Semaphores act as a gate and allow a limited number of threads (up to a programmable maximum) to enter. Rotor’s PAL limits the use semaphores to a single process.
The PAL has the ...