最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析C++無鎖隊列的實現(xiàn)代碼

 更新時間:2013年05月16日 15:44:08   作者:  
本篇文章是對C++無鎖隊列的實現(xiàn)進行了詳細的分析介紹,需要的朋友參考下
本文給出一種C++無鎖隊列的實現(xiàn)代碼,主要用于一個線程讀取數(shù)據(jù)另外一個線程寫數(shù)據(jù)
復(fù)制代碼 代碼如下:

#ifndef LOCK_FREE_QUEUE_H_
#define LOCK_FREE_QUEUE_H_

//不加鎖隊列,適合一個線程讀取,一個線程寫
#include <list>
template <typename T>
class LockFreeQueue
{
    public:
        LockFreeQueue()
        {
             list.push_back(T());//分割節(jié)點
             iHead = list.begin();
             iTail = list.end();
        };

       void Produce(const T& t) //存消息
       {
            list.push_back(t);
            iTail = list.end();
            list.erase(list.begin(), iHead);
       };

       bool Consume(T& t) //取消息
       {
            typename TList::iterator iNext = iHead;
            ++iNext;
           if (iNext != iTail)
           {
                iHead = iNext;
                t = *iHead;
                return true;
           }
           return false;
       };

       bool Peek(T& t) //查看消息不刪除
       {
            typename TList::iterator iNext = iHead;
            ++iNext;
            if (iNext != iTail)
            {
                t = *iNext;
                return true;
            }
            return false;
       }

       bool IsEmpty()
       {
           typename TList::iterator iNext = iHead;
          ++iNext;
          if (iNext != iTail)
          {
               return false;
          }
          else
          {
               return true;
          }
       }

       int GetMaxSize()
       {
           return list.max_size();
       };

      private:
           typedef std::list<T> TList;
           TList list;
           typename TList::iterator iHead, iTail;
};
#endif

相關(guān)文章

最新評論

郑州市| 遂溪县| 大姚县| 邵武市| 陇川县| 义乌市| 广州市| 莫力| 商水县| 泗洪县| 阿荣旗| 邵阳市| 汝南县| 乌拉特前旗| 石首市| 华安县| 明水县| 亚东县| 韩城市| 桐柏县| 额尔古纳市| 延津县| 昭觉县| 和顺县| 安溪县| 米易县| 藁城市| 拜泉县| 扬中市| 塔城市| 察雅县| 石嘴山市| 怀宁县| 玉树县| 米泉市| 林周县| 巴林右旗| 西充县| 普洱| 康平县| 唐山市|