Interprocess Communication (IPC)

Interprocess Communication (IPC) is a mechanism for establishing a connection between processes, running on two computers or on a single multitasking computer, to allow data to flow between those processes. Interprocess communication (IPC) mechanisms are commonly used in client/server environments and are supported to various degrees by the different Microsoft Windows operating systems.

Two models for Inter-Process communication
Two of many models for Inter-Process communication

Reasons to use interprocess communication

Use IPCs when you need to talk between programs, you want the talking to be fast, and you do not want to write the code to manage the low-level details of communication between the processes.

Since these are kernel routines, the kernel will take care of the details of the communication. For example, when you are waiting for a resource that is protected by a semaphore to become available, if you request access and the resource is currently in use, the kernel will place you in a waiting queue. When the resource becomes available, the kernel unblocks your process and you can continue. The kernel also ensures that operations are atomic, which means that a test and increment operation to set a semaphore cannot be interrupted.

IPC Mechanisms Supported on Windows Platforms