
typedef int semaphore semicolon forward slash asterisk use your imagination asterisk forward slash
semaphore mutex equals 1 semicolon forward slash asterisk controls access to rc asterisk forward slash
semaphore db equals 1 semicolon forward slash asterisk controls access to the database asterisk forward slash
int rc equals 0 semicolon forward slash asterisk hash of processes reading or wanting to asterisk forward slash
void reader open parenthesis void close parenthesis
while open parenthesis TRUE close parenthesis open curly bracket forward slash asterisk repeat forever asterisk forward slash
down open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk get exclusive access to rc asterisk forward slash
rc equals rc plus 1 semicolon forward slash asterisk one reader more now asterisk forward slash
if open parenthesis rc equals equals 1 close parenthesis down open parenthesis ampersand db close parenthesis semicolon forward slash asterisk if this is the first reader ... asterisk forward slash
up open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk release exclusive access to rc asterisk forward slash
read underscore data underscore base open parenthesis close parenthesis semicolon forward slash asterisk access the data asterisk forward slash
down open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk get exclusive access to rc asterisk forward slash
rc equals rc minus 1 semicolon forward slash asterisk one reader fewer now asterisk forward slash
if open parenthesis rc equals equals 0 close parenthesis up open parenthesis ampersand db close parenthesis semicolon forward slash asterisk if this is the last reader ... asterisk forward slash
up open parenthesis ampersand mutex close parenthesis semicolon forward slash asterisk release exclusive access to rc asterisk forward slash
use underscore data underscore read open close parenthesis semicolon forward slash asterisk noncritical region asterisk forward slash
void writer open parenthesis void close parenthesis
open curly bracket
while open parenthesis TRUE close parenthesis open curly bracket forward slash asterisk repeat forever asterisk forward slash
think underscore up underscore data open close parenthesis semicolon forward slash asterisk noncritical region asterisk forward slash
down open parenthesis ampersand db close parenthesis semicolon forward slash asterisk get exclusive access asterisk forward slash
write underscore data underscore base open close parenthesis semicolon forward slash asterisk update the data asterisk forward slash
up open parenthesis ampersand db close parenthesis semicolon forward slash asterisk release exclusive access asterisk forward slash
close curly bracket
close curly bracket
Back