23,128
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
int val;
pthread_mutex_t val_lock;
pthread_cond_t val_cond;
void *producer_thread(void *args)
{
while (1) {
pthread_mutex_lock(&val_lock);
val++;
pthread_cond_signal(&val_cond);
pthread_mutex_unlock(&val_lock);
sleep(1);
}
return NULL;
}
void *consumer_thread(void *args)
{
while (1) {
pthread_mutex_lock(&val_lock);
pthread_cond_wait(&val_cond, &val_lock);
printf("consumer_thread woke up, val is: %d\n", val);
pthread_mutex_unlock(&val_lock);
sleep(1);
}
return NULL;
}
int main(int argc, const char *argv[])
{
pthread_t producer_tid;
pthread_t consumer_tid;
pthread_mutex_init(&val_lock, NULL);
pthread_cond_init(&val_cond, NULL);
pthread_create(&producer_tid, NULL, producer_thread, NULL);
pthread_create(&consumer_tid, NULL, consumer_thread, NULL);
pthread_mutex_destroy(&val_lock);
pthread_cond_destroy(&val_cond);
pthread_join(producer_tid, NULL);
pthread_join(consumer_tid, NULL);
while (1)
sleep(1);
return 0;
}