
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