pthread_cond_t
#include
#include
#include
struct msg {
struct msg *next;
int num;
};
struct msg *head = NULL;
pthread_cond_t has_product = PTHREAD_COND_INITIALIZER;
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
void *producer(void *p)
{
struct msg *mp;
for(;;)
{
mp = malloc(sizeof(struct msg));
mp->num = rand() % 2000 + 1;
printf("Producer %d\n",mp->num);
pthread_mutex_lock(&lock);
mp->next = head;
head = mp;
pthread_mutex_unlock(&lock);
pthread_cond_signal(&has_product);
sleep(rand() % 5);
}
return NULL;
}
void *consumer(void *p)
{
struct msg *mp;
for(;;)
{