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); //解锁
}
}
1
justinwu 2018-03-14 00:20:30 +08:00
你这个是多线程,又不是多进程,有啥好纠结 惊不惊群的,你这个条件变量还能多进程共享?
再说了,条件变量通知分 pthread_cond_signal 和 pthread_cond_broadcast, 惊不惊群还不是由你。 “如果把 1,2 步骤去掉”,咋个去法? if count > 0 : count-- 这样判断和操作,当然要完整锁起来。 PS:生产者消费者代码贴全了,好研究一点,管中窥豹难免有误。 |
2
thomaswang OP |