Chapter 14
Semaphores, Shared Memory, and Message Queues
In this chapter, we discuss a set of inter-process communication facilities that were originally introduced in the AT&T System V.2 release of UNIX. Because all these facilities appeared in the same release and have a similar programmatic interface, they are often referred to as the IPC (Inter-Process Communication) facilities, or more commonly System V IPC. As you’ve already seen, they are by no means the only way of communicating between processes, but the expression System V IPC is usually used to refer to these specific facilities.
We cover the following topics in this chapter:
- Semaphores, for managing access to resources
- Shared memory, for highly efficient data sharing between programs
- Messaging, for an easy way of passing data between programs
Semaphores
When you write programs that use threads operating in multiuser systems, multiprocessing systems, or a combination of the two, you may often discover that you have critical sections of code, where you need to ensure that a single process (or a single thread of execution) has exclusive access to a resource.
Semaphores have a complex programming interface. Fortunately, you can easily provide a much-simplified interface that is sufficient for most semaphore-programming problems.
In the first example application in Chapter 7 — using dbm to access a database — the data could be corrupted if multiple programs tried to update the database at exactly the same time. There’s ...