国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

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

2020-02-24 14:31:56
字體:
供稿:網(wǎng)友

武林技術(shù)頻道的編輯今天在這里給出的是C++無鎖隊(duì)列的實(shí)現(xiàn)代碼,主要用于一個(gè)線程讀取數(shù)據(jù)另外一個(gè)線程寫數(shù)據(jù),下面就和武林技術(shù)小編一起來增長(zhǎng)見識(shí),體驗(yàn)學(xué)習(xí)C++的樂趣吧。

?

#ifndef LOCK_FREE_QUEUE_H_
#define LOCK_FREE_QUEUE_H_

//不加鎖隊(duì)列,適合一個(gè)線程讀取,一個(gè)線程寫
#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++無鎖隊(duì)列的實(shí)現(xiàn)代碼的全部?jī)?nèi)容,您都看明白了嗎?如有不清楚的地方,請(qǐng)咨詢,同時(shí)在這里感謝大家對(duì)武林技術(shù)頻道的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 陆河县| 乐至县| 原阳县| 吕梁市| 漯河市| 蒲江县| 通河县| 濉溪县| 舒城县| 太仓市| 洪雅县| 瑞丽市| 曲水县| 彭泽县| 桑植县| 五指山市| 哈巴河县| 惠东县| 高唐县| 曲阜市| 将乐县| 治多县| 三门县| 安康市| 无为县| 定安县| 师宗县| 洪泽县| 兴文县| 大竹县| 吉隆县| 乐都县| 太谷县| 阿鲁科尔沁旗| 五寨县| 资讯 | 威宁| 奉化市| 白沙| 屏山县| 吕梁市|