生产者与消费者模式是解决并发的有效手段。muduo实现了两种缓冲队列:有界缓冲队列和无边界缓冲队列
无界缓冲队列
无边界缓冲队列BlockingQueue比较简单,成员数据如下:
mutable MutexLock mutex_;
Condition notEmpty_;
std::deque queue_;
有界缓冲队列
有界缓冲队列BoundedBlockingQueue类成员数据如下:需要两个条件变量
mutable MutexLock mutex_;
Condition notEmpty_;
Condition notFull_;
boost::circular_buffer queue_;