Long description

Back

The 43 lines of code are as follows.

hash include open angle bracket stdio.h close angle bracket

hash include open angle bracket pthread.h close angle bracket

hash define MAX 1000000000 forward slash asterisk how many numbers to produce asterisk forward slash

othread under score mutex under score t the under score mutex semi colon

othread under score cond under score t condc coma condp semi colon forward slash asterisk used for signaling asterisk forward slash

int buffer equals to 0 semi colon forward slash asterisk buffer used between producer and consumer asterisk forward slash

void asterisk producer open parenthesis void asterisk ptr close parenthesis forward slash asterisk produce data asterisk forward slash

open curly bracket

int i semi colon

for open parenthesis i equals to 1 semi colon i less than equals to MAX semi colon i plus plus close parenthesis open curly bracket

pthread under score mutex under score lock open parenthesis &the under score mutex close parenthesis semi colon forward slash asterisk get exclusive access to buffer asterisk forward slash

while open parenthesis buffer exclamation mark equals to 0 close parenthesis pthread under score cond under score wait open parenthesis &condp coma &the under score mutex close parenthesis semi colon

buffer equals to i semi colon forward slash asterisk put item in buffer asterisk forward slash

pthread under score cond under score signal open parenthesis &condc close parenthesis semi colon forward slash asterisk wake up consumer asterisk forward slash

pthread under score mutex under score unlock open parenthesis &the under score mutex close parenthesis semi colon forward slash asterisk release access to buffer asterisk forward slash

close curly bracket

pthread under score exit open parenthesis 0 close parenthesis semi colon

close curly bracket

void asterisk consumer open parenthesis void asterisk ptr close parenthesis forward slash asterisk consume data asterisk forward slash

open curly bracket int i semi colon

for open parenthesis i equals to 1 semi colon i less than equals to MAX semi colon i plus plus close parenthesis open curly bracket

pthread under score mutex under score lock open parenthesis &the under score mutex close parenthesis semi colon forward slash asterisk get exclusive access to buffer asterisk forward slash

while open parenthesis buffer equals to equals to 0 close parenthesis pthread under score cond under score wait open parenthesis &condc coma &the under score mutex close parenthesis semi colon

buffer equals to 0 semi colon forward slash asterisk take item out of buffer open parenthesis not shown close parenthesis and reinitialize asterisk forward slash

pthread under score cond under score signal open parenthesis &condp close parenthesis semi colon forward slash asterisk wake up producer asterisk forward slash

pthread under score mutex under score unlock open parenthesis &the under score mutex close parenthesis semi colon forward slash asterisk release access to buffer asterisk forward slash

close curly bracket

pthread under score exit open parenthesis 0 close parenthesis semi colon

close curly bracket

int main open parenthesis int argc coma char asterisk asterisk argv close parenthesis

open curly bracket

pthread under score t pro coma con semi colon

pthread under score mutex under score init open parenthesis &the under score mutex coma 0 close parenthesis semi colon

pthread under score cond under score init open parenthesis &condc coma 0 close parenthesis semi colon

pthread under score cond under score init open parenthesis &condp coma 0 close parenthesis semi colon

pthread under score create open parenthesis &con coma 0 coma consumer coma 0 close parenthesis semi colon

pthread under score create open parenthesis &pro coma 0 coma producer coma 0 close parenthesis semi colon

pthread under score join open parenthesis pro coma 0 close parenthesis semi colon

pthread under score join open parenthesis con coma 0 close parenthesis semi colon

pthread under score cond under score destroy open parenthesis &condc close parenthesis semi colon

pthread under score cond under score destroy open parenthesis &condp close parenthesis semi colon

pthread under score mutex under score destroy open parenthesis &the under score mutex close parenthesis semi colon

close curly bracket

Back