亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解析C++無(wú)鎖隊(duì)列的實(shí)現(xiàn)代碼

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

#ifndef LOCK_FREE_QUEUE_H_
#define LOCK_FREE_QUEUE_H_

//不加鎖隊(duì)列,適合一個(gè)線(xiàn)程讀取,一個(gè)線(xiàn)程寫(xiě)
#include <list>
template <typename T>
class LockFreeQueue
{
    public:
        LockFreeQueue()
        {
             list.push_back(T());//分割節(jié)點(diǎn)
             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)文章

  • C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法

    C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法

    這篇文章主要介紹了C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法,涉及C語(yǔ)言針對(duì)數(shù)組的遍歷與判斷技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C語(yǔ)言指針用法總結(jié)

    C語(yǔ)言指針用法總結(jié)

    本文詳細(xì)講解了C語(yǔ)言指針用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 淺談C++ 緩沖區(qū)(buffer)的使用

    淺談C++ 緩沖區(qū)(buffer)的使用

    緩沖區(qū)是用來(lái)存放流中的數(shù)據(jù),本文詳細(xì)的介紹了C++ 緩沖區(qū)(buffer)的使用,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++ move semantic移動(dòng)語(yǔ)義介紹

    C++ move semantic移動(dòng)語(yǔ)義介紹

    首先,移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)這兩個(gè)概念是在C++的模板編程的基礎(chǔ)上,新增的特性,主要是配合模板來(lái)使用。本篇會(huì)從C++的值類(lèi)型,到移動(dòng)拷貝與移動(dòng)賦值來(lái)理解移動(dòng)語(yǔ)義與完美轉(zhuǎn)發(fā)
    2022-08-08
  • 數(shù)組和指針的區(qū)別深入剖析

    數(shù)組和指針的區(qū)別深入剖析

    在C/C++中,指針和數(shù)組在很多地方可以互換使用,這使得我們產(chǎn)生一種錯(cuò)覺(jué),感覺(jué)數(shù)組和指針兩者是完全等價(jià)的,事實(shí)上數(shù)組和指針是有很大的區(qū)別的
    2012-11-11
  • C++模擬實(shí)現(xiàn)List迭代器詳解

    C++模擬實(shí)現(xiàn)List迭代器詳解

    list不同于其他容器,他是一個(gè)鏈表,物理地址并不連續(xù)。所以在實(shí)現(xiàn)list類(lèi)的迭代器的時(shí)候,需要將迭代器單獨(dú)封裝到一個(gè)類(lèi)里,因?yàn)樾枰剌d很多操作符來(lái)跟其他容器的迭代器使用達(dá)成一致
    2022-04-04
  • C++:構(gòu)造函數(shù),析構(gòu)函數(shù)詳解

    C++:構(gòu)造函數(shù),析構(gòu)函數(shù)詳解

    今天小編就為大家分享一篇關(guān)于C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2021-09-09
  • C語(yǔ)言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 介紹C語(yǔ)言中tolower函數(shù)的實(shí)例

    介紹C語(yǔ)言中tolower函數(shù)的實(shí)例

    這篇文章主要介紹了介紹C語(yǔ)言中tolower函數(shù)的實(shí)例,本文列出了該函數(shù)的頭文件,功能說(shuō)明等,以及如何使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言編程之初識(shí)數(shù)組線(xiàn)性查找和二分查找

    C語(yǔ)言編程之初識(shí)數(shù)組線(xiàn)性查找和二分查找

    本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中數(shù)組的線(xiàn)性查找及二分查找分析講解,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09

最新評(píng)論