| |
Cooperating Processes
- Inter process communication
- Shared memory between processes
- Message passing
- Producer consumer relationship
IPC: Shared Memory
- Shared buffer between processes
#define BUF_SZ 1024
typedef struct {
...
} BUF_Data;
struct {
BUF_Data items[BUF_SZ];
int inptr, outptr; /* Global variables */
} buffer;/* Must be shared between
/* two processes */
Producer and Consumer Code
void produce(BUF_Data item) {
while ((buffer.inptr+1)%BUF_SZ == buffer.outptr) ;
buffer.items[buffer.inptr] = item;
buffer.inptr = (buffer.inptr +1)%BUF_SZ;
}
BUF_Data consume(void) {
BUF_Data item;
while (buffer.outptr == buffer.inptr) ;
item = buffer.items[buffer.outptr];
buffer.outptr = (buffer.outptr +1)%BUF_SZ;
return (item);
} |
|