码迷,mamicode.com
首页 > 其他好文 > 详细

caffe数据读取的双阻塞队列说明

时间:2017-08-05 23:39:15      阅读:380      评论:0      收藏:0      [点我收藏+]

标签:exp   最大   ble   素数   cpp   isa   pop   data   另一个   

caffe的datareader类中

  class QueuePair {
   public:
    explicit QueuePair(int size);
    ~QueuePair();

    BlockingQueue<T*> free_;
    BlockingQueue<T*> full_;

  DISABLE_COPY_AND_ASSIGN(QueuePair);
  };

  

这个就是双阻塞队列,先将free队列填充到最大长度,然后按照如下规则:

1,每当生产者push时,先将full队列pop,如果full为空,不可pop,那么表明free队列已满,则free队列不可push,如果full队列可以pop,那么执行pop,并对free队列push。

2,每当消费者pop时,先将free队列pop,如果可以pop,则进行pop并消费,然后将其push进入full队列,如果free队列不可pop为空,则消费者不可pop。

3,核心思想是让full和free队列实际元素数量之和恒定为最大队列长度不变,通过判断一个队列是否为空来判断另一个队列是否为满。

4,主要是我们可能不知道队列最大长度时,无法判断是否满时采用这种方法。

caffe数据读取的双阻塞队列说明

标签:exp   最大   ble   素数   cpp   isa   pop   data   另一个   

原文地址:http://www.cnblogs.com/tomsonsgs/p/7291844.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!