I'm a little bit confused on how to initialize and implement a pthread mutex and condition variable. The goal of the program is to have producers place a set number of ints in a queue and consumers take the ints out of the queue. I must also be able to define the number of producer and consumer threads that are created. In the starter code, I am give these:
// Locks & Condition Variables
pthread_mutex_t lock; // Lock shared resources among theads
pthread_cond_t full; // Condition indicating queue is full
pthread_cond_t empty; // Condition indicating queue is empty
as shared resources. In the //TODO
comment in the main method, one of the steps says to initialize the lock and condition variables. I have a very weak understanding of pthread mutex's and conditions, so would I say:
lock = PTHREAD_MUTEX_INIT;
full = PTHREAD_MUTEX_INIT;
empty = PTHREAD_MUTEX_INIT;
In the consumer and producer methods, would i just call the lock by saying:
pthread_mutex_lock(&lock);
and
pthread_cond_wait(&full, &lock);
?
My code is pretty buggy right now, so I want to at least make sure that I'm using the mutex's and conditions correctly before debugging further. Thanks in advance!
PHREAD_MUTEX_INIT
. That's clearly wrong. UsePTHREAD_COND_INITIALIZER
. – WhozCraig