create: Select a filename. Create XSI semaphore array {S = 0, W = 0, X = 1, Q = 0 and N = 0} with random key. Store the semaphore array's key in decimal form on the first line in the selected file. Create XSI shared memory, with an allocation of 2048 bytes, with a random key. Store the shared memory's key in decimal form on the second line in the selected file. broadcast: with P(X): Z(W) Write NUL-terminate message to shared memory with V(N): -- (1) Q := 0 Z(S) -- (1) may be omitted if semaphores are known that P(·), Z(·), V(·) cannot create a race condition with a processes running Z(·). listen: with V(S): forever: V(Q) Z(Q) Read NUL-terminated message from shared memory if breaking: break with V(W): with P(S): Z(S) Z(N) `V(a)` means that semaphore a is released. `P(a)` means that semaphore a is acquired. `Z(a)` means that the process waits for semaphore a to become 0. `with P(a)` that `P(a)` is done before the entering the scope, and `V(a)` is done when exiting the scope. It also means that these actions [P(a) and V(a)] are undone when the process exits, or if the call fails. `with V(a)` is to `V(a)` as `with P(a)` is to `P(a)`.