In XINU, each process has its own copy of local variables, formal parameters, and procedure calls, but all processes share the same set of global (external) variables. Consider a simple example of two processes that need to communicate with each other through a shared integer, `n'.
#include <conf.h> int n = 0; /* external variable shared by all processes */ main() { int produce(), consume(); resume( create(consume, 200, 20, "cons", 0) ); resume( create(produce, 200, 20, "prod", 0) ); } produce() { int i; for( i=1; i<=2000; i++ ) n++; }; consume() { int i; for( i=1; i<=2000; i++ ) printf("n is %d", n); }.lp The process executing `produce' loops 2000 times, incrementing `n', we call this process the producer. The process executing `consume' also loops 2000 times; it prints the value of `n' in decimal. We call this process the consumer.