boundedbuffer
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
boundedbuffer [2007/09/24 19:50] – niloo59 | boundedbuffer [2007/09/25 05:20] (current) – nshafiei | ||
---|---|---|---|
Line 216: | Line 216: | ||
int i,j, data; | int i,j, data; | ||
in(" | in(" | ||
+ | rd(" | ||
+ | #wait when the buffer is empty | ||
+ | while (i==j) rd(" | ||
in(" | in(" | ||
i=(i+1)%BUFFERSIZE; | i=(i+1)%BUFFERSIZE; | ||
Line 227: | Line 230: | ||
in(" | in(" | ||
rd(" | rd(" | ||
- | #loop when the buffer is full | + | #wait when the buffer is full |
while ( j-i==BUFFERSIZE-1 || i-j==1 ) rd(" | while ( j-i==BUFFERSIZE-1 || i-j==1 ) rd(" | ||
j=(j+1)%BUFFERSIZE; | j=(j+1)%BUFFERSIZE; | ||
Line 270: | Line 273: | ||
</ | </ | ||
+ | |||
+ | |||
+ | <code c> | ||
+ | |||
+ | // i1 and i2 are initialized to 0 | ||
+ | void put(int data) | ||
+ | { | ||
+ | int i1, i2; | ||
+ | read(" | ||
+ | in(" | ||
+ | if(i1==size)i1=0; | ||
+ | while(i1+1==i2 || (i1+1==size && i2==0)) | ||
+ | | ||
+ | out(" | ||
+ | out(" | ||
+ | } | ||
+ | |||
+ | |||
+ | int get() | ||
+ | { | ||
+ | int i2, data; | ||
+ | in(" | ||
+ | if(i2==size)i2=0; | ||
+ | in(" | ||
+ | out(" | ||
+ | return data; | ||
+ | } | ||
+ | |||
+ | </ |
boundedbuffer.1190663441.txt.gz · Last modified: 2007/09/24 19:50 (external edit)