使用条件变量实现
一,创建并加锁
-
phtread_mutex_t mutex;
-
phtread_mutex_init()
-
phtread_mutex_lock
-
phtread_cond_init
消费者: -
phtread_cond_wait() //等待条件满足,
1)阻塞等条件变量
2)解锁unlock
3)加锁
6. 访问共享数据
7. 解锁,释放条件变量,释放锁
生产者:
8. phtread_mutext_lock
9. 生产数据,
10. phtread_mutext_unlock
11. phtread-cond_signal/phtread-cond_broadcast
12. 跳转到第7步,循环
若有多个消费者,需要重新判断条件
使用信号量实现
初始化
sem_init
生产者
sem_post
消费者
sem_wait
比较
信号量相较条件变量简单