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); }
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.