
hash define N 100 forward slash asterisk number of slots in the buffer asterisk forward slash
typedef int semaphore semicolon forward slash asterisk semaphores are a special kind of int asterisk forward slash
semaphore mutex equals 1 semicolon forward slash asterisk controls access to critical region asterisk forward slash
semaphore empty equals N semicolon forward slash asterisk counts empty buffer slots asterisk forward slash
semaphore full equals 0 semicolon forward slash asterisk counts full buffer slots asterisk forward slash
void producer open parenthesis void close parenthesis
open curly bracket
int item semicolon
while open parenthesis TRUE close parenthesis open curly bracket forward slash asterisk TRUE is the constant 1 asterisk forward slash
item equals produce underscore item open close parenthesis semicolon forward slash asterisk generate something to put in buffer asterisk forward slash
down open parenthesis ampersand empty close parenthesis semicolon forward slash asterisk decrement empty count asterisk forward slash
down open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk enter critical region asterisk forward slash
insert underscore item open parenthesis item close parenthesis semicolon forward slash asterisk put new item in buffer asterisk forward slash
up open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk leave critical region asterisk forward slash
up open parenthesis ampersand full close parenthesis semicolon forward slash asterisk increment count of full slots asterisk forward slash
void consumer open parenthesis void close parenthesis
open curly bracket
int item semicolon
while open parenthesis TRUE close parenthesis open curly bracket forward slash asterisk infinite loop asterisk forward slash
down open parenthesis ampersand full close parenthesis semicolon forward slash asterisk decrement full count asterisk forward slash
down open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk enter critical region asterisk forward slash
item equals remove underscore item open close parenthesis semicolon forward slash asterisk take item from buffer asterisk forward slash
up open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk leave critical region asterisk forward slash
up open parenthesis ampersand empty close parenthesis semicolon forward slash asterisk increment count of empty slots asterisk forward slash
consume underscore item open parenthesis item close parenthesis semicolon forward slash asterisk do something with the item asterisk forward slash
Back