BlockingQueue Class
源码阅读
如果有问题,欢迎交流!!!
阻塞队列,干嘛的?BlockingQueue Class
是一个模板类,会将类型为T
的对象保存,或弹出。
用来干嘛?
数据成员
template<typename T>
Condition notEmpty_
条件变量,用于通知阻塞线程,队列非空。因为这个队列大小是不设限制的,所以不需要额外的条件变量通知线程已满。
std::deque<T> queue_
保存类型为
T
的对象的队列
mutable MutexLock mutex_
锁,用于保护
queue_
和notEmpty_
的临界区
函数成员
void put()
向队列
queue_
中添加对象,并发送notEmpty_.notify()
信号。这个函数有两个重载,其中一个接受const
修饰的对象,它没有使用move
。我不懂move
是干嘛的
T take()
获取队列头的对象,如果队列为空,则阻塞。
size_t size()
获取队列长度