Synchronizing Processes and Threads

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

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 (mutual exclusion objects)

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

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

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.

Processes and threads

The PAL has the ...

Get Shared Source CLI Essentials now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.