同步:生产者消费者模型(条件变量与信号量)
同步 什么是同步: 通过条件判断实现对临界资源访问的合理性 实现: 条件变量:当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了。所以用条件变量可以睡眠的等待某一种条件出现。 原理: 向外提供一个等待队列,以及等待与唤醒的功能 生产者消费者模型 一、一个交易场所 二、两个角色:生产者和消费者 三、三种关系: 生产者和生产者:互斥 生产者和消费者:互斥与同步 消费者和消费者:互斥 优点: 解耦 支持并发 忙闲不均 pthread_cond_wait 调用等待时释放锁,唤醒时重新获得锁 生产者消费者模型 10 class BlockQueue 11 { 12 private : 13 queue < int > q ; 14 int cap ; 15 pthread_mutex_t lock ; 16 pthread_cond_t c_cond ; 17 pthread_cond_t p_cond ; 55 public : 56 BlockQueue ( int cap_ = 4 ) 57 : cap ( cap_ ) 58 { 59 pthread_mutex_init ( & lock , nullptr ) ; 60 pthread_cond_init ( & c_cond , nullptr ) ; 61 pthread_cond_init (