相关疑难解决方法(0)

如何使用条件变量

Linux编程接口书有一段代码(生产者/消费者)来展示条件变量的工作原理:

static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

static int avail = 0;

while (TRUE) {
    s = pthread_mutex_lock(&mtx);

    while (avail == 0) {   /* Wait for something to consume */
       s = pthread_cond_wait(&cond, &mtx);
    }

    while (avail > 0) {   /* Consume all available units */ 
        avail--;
    }

    s = pthread_mutex_unlock(&mtx);
}
Run Code Online (Sandbox Code Playgroud)

为什么我们用pthread_mutex_lockwhile?为什么我们不用它if

c mutex pthreads condition-variable

10
推荐指数
1
解决办法
6460
查看次数

标签 统计

c ×1

condition-variable ×1

mutex ×1

pthreads ×1