Two processes, threads, or objects can communicate via
SharedMemory. Using shared memory requires all participants to be located on the same
PhysicalMachine or
VirtualMachine. Shared memory is one of the fastest communication mechanisms compared, say, to Sockets, HTTP, IIOP, or DCOM. However,
SharedMemory is a brittle
LowLevelSolution that requires
CarefulCoding with
SynchronizationObjects.
In particular, use of shared memory can lead to problems when passing around class objects as in C++: your object data goes into the shared memory while the class's virtual function tables stay in process memory, and aren't accessible from the process you're sharing with. See
VirtualFunctionsAndSharedMemory.