BoundedBlockingQueue Class
源码阅读(muduo/base)
如果有问题,欢迎交流!!!
阻塞队列模板类的有限版本,其队列大小在构造函数中被初始化,并定义了用于判断队列空或满的函数,而且其队列大小确定后不能改变。
数据成员
template<typename T>
boost::circular_buffer<T> queue_
队列,但这个类型是什么?
一个环状的缓冲区
Condition notEmpty_
条件变量,用于通知队列非空
Condition notFull_
条件变量,用于通知队列未满
mutable MutexLock mutex_
锁,用于保护这两个条件变量和队列的缓冲区
函数成员
BoundedBlockingQueue Class
和BlockingQueue Class
一样定义了一系列用于加入、获取的函数,只不过前者在加入对象前会判断队列是否已满,获取后通知未满。同时还有额外的获取队列大小的函数。虽然,这个环形缓冲区,但是使用起来还是向线性表一样,会有弹出操作,加入时如果已满,则会阻塞在条件变量上。