Long description

Back

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