生产者-消费者模型

2017-08-29  本文已影响0人  狗尾巴草败了
#include <unistd.h>
#include <pthread.h>

static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
static int avail = 0;

//producer  一般为子线程
void producer() {
    pthread_mutex_lock(&mtx);
    avail++;
    pthread_mutex_unlock(&mtx);
    pthread_cond_signal(&cond);
}

//consunmer  一般为主线程

void consumer() {
    while(1) {
        pthread_mutex_lock(&mtx);
        while(avail == 0) {
            pthread_cond_wait(&cond, &mtx);
        }
        while(avail > 0) {
            /* do something */
            avail--;
        }
        pthread_mutex_unlock(&mtx);
    }
}
上一篇下一篇

猜你喜欢

热点阅读