Let us implement a bounded FIFO buffer in C-Linda. There are a number of producers and a number of consumer. Assume that the functions consume and produce have already been defined. Now consider the functions consumer and producer. void consumer() { int data; while (1) { data = get(); consume(data); } } void producer() { int data; while (1) { data = produce(); put(data); } } The functions get and put can be defined as follows. int get() { int data; int index; in("head", ?index); in("full", index, ?data); out("head", ++index); out("empty"); return data; } void put(int data) { int index; in("empty"); in("tail", ?index); out("full", index, data); out("tail", ++index); } A number of consumers and producers can be created as follows. #define CONSUMER 10 #define PRODUCER 5 #define CAPACITY 25 void real_main() { for (int i = 0; i < CAPACITY) { out("empty"); } out("head", 0); out("tail", 0); for (int i = 0; i < CONSUMER; i++) { eval("consumer", consumer()); } for (int i = 0; i < PRODUCER; i++) { eval("producer", producer()); } }