LINUX线程(六)生产者,消费者同步实例

使用条件变量实现

一,创建并加锁

  1. phtread_mutex_t mutex;

  2. phtread_mutex_init()

  3. phtread_mutex_lock

  4. phtread_cond_init
    消费者:

  5. 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

比较

信号量相较条件变量简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值