do { /*Test Counter*/ while (counter==0) { /*do nothing*/ } /*Take Item From Buffer*/ nextc = buffer[out]; /*Increment Pointer*/ out = (out+1)%n; /*Decrement Counter*/ counter = counter - 1; /*Consume Item*/ cout << nextc ; } while (true)
The statements:
- counter = counter +1;
- counter = counter 1;
must be executed atomically.
|