Either producer or consumer will perform their operations with
random delay between them. In order to control the access to the
buffer, producer and consumer must cooperate well.
The control is enforced by parent. Each child will send request
to parent just like system call.
The pseudo code for producer is
for(;;){
sleep for a while
producing an item
REQUEST
put into buffer
RELEASE
}
The REQUEST and RELEASE are implemented with sending signal to
parent. But REQUEST should be a block function call.
So after sending to parent, some code like pause() must be used.