条件变量问题,对消费者研究

2018-03-13 17:46:55 +08:00
 thomaswang
void *decrement(void *arg) {
    while (1) {
        pthread_mutex_lock(&mutex); //加锁
        while (count <= 0) {
            printf("count<=0,thread1 is hanging!\n");
            pthread_cond_wait(&cond, &mutex); // 解锁,等信号,加锁
            sleep(1);
            printf("sleep!\n");
        }
        count = count - 1;
        pthread_mutex_unlock(&mutex); //解锁
    }
}
936 次点击
所在节点    问与答
2 条回复
justinwu
2018-03-14 00:20:30 +08:00
你这个是多线程,又不是多进程,有啥好纠结 惊不惊群的,你这个条件变量还能多进程共享?
再说了,条件变量通知分 pthread_cond_signal 和 pthread_cond_broadcast, 惊不惊群还不是由你。
“如果把 1,2 步骤去掉”,咋个去法?
if count > 0 : count-- 这样判断和操作,当然要完整锁起来。

PS:生产者消费者代码贴全了,好研究一点,管中窥豹难免有误。
thomaswang
2018-03-14 09:39:12 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/437691

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX