chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

隊(duì)列的概念

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2020-10-30 11:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隊(duì)列的概念

首先我們聯(lián)想一下鏈表,在單鏈表中,我們只能對(duì)他的鏈表表尾進(jìn)行插入,對(duì)鏈表的表頭進(jìn)行結(jié)點(diǎn)的刪除,這樣強(qiáng)限制性的鏈表,就是我們所說的隊(duì)列。

也就是說,隊(duì)列(queue)是限定在表的一端進(jìn)行插入,表的另一端進(jìn)行刪除的數(shù)據(jù)結(jié)構(gòu)。

如下圖所示,假如你去買票排隊(duì),每一列隊(duì)伍都有一個(gè)隊(duì)尾和對(duì)頭,先來的先買票,后來的后買,買好的就從對(duì)頭出去,新來買票的就需要從隊(duì)尾繼續(xù)排隊(duì)。

通常,稱進(jìn)數(shù)據(jù)的一端為隊(duì)尾,出數(shù)據(jù)的一端為隊(duì)頭,數(shù)據(jù)元素進(jìn)隊(duì)列的過程稱為入隊(duì),出隊(duì)列的過程稱為出隊(duì)。

我們可以總結(jié)如下

隊(duì)列是一個(gè)線性的數(shù)據(jù)結(jié)構(gòu),并且這個(gè)數(shù)據(jù)結(jié)構(gòu)只允許在一端進(jìn)行插入,另一端進(jìn)行刪除,禁止直接訪問除這兩端以外的一切數(shù)據(jù),且隊(duì)列是一個(gè)先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。

如上圖,隊(duì)列就像一個(gè)兩端相通的水管,只允許一端插入,另一端取出,取出的球就不在水管里面了,而先放入管中的球就會(huì)先從管中拿出。

隊(duì)列存儲(chǔ)結(jié)構(gòu)的實(shí)現(xiàn)有以下兩種方式

順序隊(duì)列:在順序表的基礎(chǔ)上實(shí)現(xiàn)的隊(duì)列結(jié)構(gòu)

鏈隊(duì)列:在鏈表的基礎(chǔ)上實(shí)現(xiàn)的隊(duì)列結(jié)構(gòu)

兩者的區(qū)別僅是順序表和鏈表的區(qū)別,即在實(shí)際的物理空間中,數(shù)據(jù)集中存儲(chǔ)的隊(duì)列是順序隊(duì)列,分散存儲(chǔ)的隊(duì)列是鏈隊(duì)列。

隊(duì)列的結(jié)點(diǎn)設(shè)計(jì)與初始化

隊(duì)列只有鏈?zhǔn)降脑O(shè)計(jì)方法,其本身分為多種隊(duì)列,如順序隊(duì)列和循環(huán)隊(duì)列,還有衍生的優(yōu)先隊(duì)列等等,我們以順序隊(duì)列的設(shè)計(jì)為例。

首先是隊(duì)列的結(jié)點(diǎn)設(shè)計(jì),我們可以設(shè)計(jì)出兩個(gè)結(jié)構(gòu)體,一個(gè)結(jié)構(gòu)體Node表示結(jié)點(diǎn),其中包含有一個(gè)data域和next指針,如圖所示:

其中data表示數(shù)據(jù),其可以是簡(jiǎn)單的類型,也可以是復(fù)雜的結(jié)構(gòu)體。

next指針表示,下一個(gè)的指針,其指向下一個(gè)結(jié)點(diǎn),通過next指針將各個(gè)結(jié)點(diǎn)鏈接。

然后我們?cè)偬砑右粋€(gè)結(jié)構(gòu)體,其包括了兩個(gè)分別永遠(yuǎn)指向隊(duì)列的隊(duì)尾和隊(duì)頭的指針,看到這里是不是覺得和棧很像?

我們主要的操作只對(duì)這兩個(gè)指針進(jìn)行操作,如圖所示:

其結(jié)構(gòu)體設(shè)計(jì)的代碼可以表示為:

//結(jié)點(diǎn)定義 typedefstructnode{ intdata; structnode*next; }node; //隊(duì)列定義,隊(duì)首指針和隊(duì)尾指針 typedefstructqueue{ node*front;//頭指針 node*rear;//尾指針 }queue;

對(duì)于初始化需要初始化兩個(gè)類型,一個(gè)是初始化結(jié)點(diǎn),一個(gè)是初始化隊(duì)列。

我們看到代碼中的描述,初始化隊(duì)列有些不同,當(dāng)初始化隊(duì)列的時(shí)候,需要將頭尾兩個(gè)結(jié)點(diǎn)指向的內(nèi)容統(tǒng)統(tǒng)置為空,表示是一個(gè)空隊(duì)列,兩個(gè)創(chuàng)建的函數(shù)代碼可以表示為:

//初始化結(jié)點(diǎn) node*init_node(){ node*n=(node*)malloc(sizeof(node)); if(n==NULL){//建立失敗,退出 exit(0); } returnn; }//初始化隊(duì)列 queue*init_queue(){ queue*q=(queue*)malloc(sizeof(queue)); if(q==NULL){//建立失敗,退出 exit(0); } //頭尾結(jié)點(diǎn)均賦值NULL q->front=NULL; q->rear=NULL; returnq; }

判斷隊(duì)列是否為空

這是一個(gè)既簡(jiǎn)單也很要緊的操作,判斷隊(duì)列是否為空直接就是判斷隊(duì)列頭指針是否是空值即可,判斷隊(duì)列是否為空是比較常用的操作,切勿忘記。

其代碼可以表示為:

//隊(duì)列判空 intempty(queue*q){ if(q->front==NULL){ return1;//1--表示真,說明隊(duì)列非空 }else{ return0;//0--表示假,說明隊(duì)列為空 } }

或者直接利用返回值進(jìn)行更簡(jiǎn)單的判斷也可以,代碼如下:

intempty(queue*q){ returnq->front==NULL; }

入隊(duì)操作

入隊(duì)操作變化如下圖:

進(jìn)行入隊(duì)(push)操作的時(shí)候,同樣的,我們首先需要特判隊(duì)列是否為空,如果隊(duì)列為空的話,需要將頭指針和尾指針一同指向第一個(gè)結(jié)點(diǎn),代碼如下

front=n; rear=n;

如圖所示:

唯一結(jié)點(diǎn)n

當(dāng)如果隊(duì)列不為空的時(shí)候,這時(shí)我們只需要將尾結(jié)點(diǎn)向后移動(dòng),通過不斷移動(dòng)next指針指向新的結(jié)點(diǎn)構(gòu)成隊(duì)列即可。如圖所示:

其代碼可以表示為:

//入隊(duì)操作 voidpush(queue*q,intdata){ node*n=init_node(); n->data=data; n->next=NULL;//采用尾插入法 //if(q->rear==NULL){//使用此方法也可以 if(empty(q)){ q->front=n; q->rear=n; }else{ q->rear->next=n;//n成為當(dāng)前尾結(jié)點(diǎn)的下一結(jié)點(diǎn) q->rear=n;//讓尾指針指向n } }

出隊(duì)操作

出隊(duì)操作變化如下圖:

出隊(duì)(pop)操作,是指在隊(duì)列不為空的情況下進(jìn)行的一個(gè)判斷,當(dāng)然我們?cè)诖艘惨欢ㄒM(jìn)行隊(duì)列判空的操作,你懂的。

如圖,如果隊(duì)列只有一個(gè)元素了,也就是說頭尾指針均指向了同一個(gè)結(jié)點(diǎn),那么我們直接將頭尾兩指針制空NULL,并釋放這一個(gè)結(jié)點(diǎn)即可,如下圖所示:

當(dāng)隊(duì)列含有以上個(gè)元素時(shí),我們需要將隊(duì)列的頭指針指向頭指針當(dāng)前指向的下一個(gè)元素,并釋放掉當(dāng)前元素即可,如下圖所示

其代碼可以表示為:

//出隊(duì)操作 voidpop(queue*q){ node*n=q->front; if(empty(q)){ return;//此時(shí)隊(duì)列為空,直接返回函數(shù)結(jié)束 } if(q->front==q->rear){ q->front=NULL;//只有一個(gè)元素時(shí)直接將兩端指向置為空即可 q->rear=NULL; free(n);//記得歸還內(nèi)存空間 }else{ q->front=q->front->next; free(n); } }

打印隊(duì)列元素(遍歷)

打印隊(duì)列的全部元素可以幫助我們調(diào)試,看到隊(duì)列中具體的數(shù)據(jù),在隊(duì)列不為空的情況下,通過結(jié)點(diǎn)的next指向依次遍歷并輸出元素既可。

其代碼可以表示為

//打印隊(duì)列元素 voidprint_queue(queue*q){ node*n=init_node(); n=q->front; if(empty(q)){ return;//此時(shí)隊(duì)列為空,直接返回函數(shù)結(jié)束 } while(n!=NULL){ printf("%d ",n->data); n=n->next; } printf(" ");//記得換行 }

遍歷操作還有很多別的表示方法,比如說進(jìn)行計(jì)算隊(duì)列中含有多少元素,代碼如下:

intcalac(queue*q){ node*n=init_node(); n=q->front; intcnt=0;//計(jì)數(shù)器設(shè)計(jì) if(empty(q)){ return0;//此時(shí)隊(duì)列為空,直接返回函數(shù)結(jié)束 } while(n!=NULL) { n=n->next; cnt++; } returncnt; }

順序隊(duì)列的假溢出

什么是假溢出?我們可能會(huì)有疑問,溢出還有假的!

這里我們也需要考慮到順序隊(duì)列有什么缺點(diǎn),對(duì)于順序隊(duì)列而言,其存在已經(jīng)足夠解決大多時(shí)候的設(shè)計(jì)問題了,但是其依舊存在一些缺陷和不足。

從上面的解析中我們看到,入隊(duì)和出隊(duì)操作均是直接在其后面進(jìn)行結(jié)點(diǎn)的鏈接和刪除,這種操作會(huì)造成其使用空間不斷向出隊(duì)的那一邊偏移,產(chǎn)生假溢出。

我們來打打一個(gè)比方,先看看下面的圖:

示例順序隊(duì)列

上圖所示,有一個(gè)順序隊(duì)列,這個(gè)隊(duì)列的大小為5,其已經(jīng)包含了四個(gè)元素data1,data2,data3,data4。

接著,我們對(duì)這個(gè)隊(duì)列進(jìn)行出隊(duì)操作,出隊(duì)2個(gè)元素,隊(duì)列就變成了這個(gè)樣子,如下圖所示:

從圖上看到似乎沒有什么問題,但是當(dāng)我們接著再進(jìn)行入隊(duì)操作,比如我們?nèi)腙?duì)2個(gè)元素,分別是data5和data6。

此時(shí)我們已經(jīng)發(fā)現(xiàn)問題了,尾指針移動(dòng)到我們可以進(jìn)行隊(duì)列操作的范圍之外去了,有沒有發(fā)現(xiàn)?

這種現(xiàn)象我們稱呼作為隊(duì)列用的存儲(chǔ)區(qū)還沒有滿,但隊(duì)列卻發(fā)生了溢出,我們把這種現(xiàn)象稱為假溢出。如下圖所示:

出隊(duì)產(chǎn)生假溢出

那么我們有什么辦法解決這個(gè)問題呢?這就要涉及到循環(huán)隊(duì)列的性質(zhì)了!

循環(huán)隊(duì)列的概念

可能這個(gè)時(shí)候會(huì)產(chǎn)生一個(gè)疑問,我們學(xué)習(xí)的隊(duì)列不是使用鏈表實(shí)現(xiàn)的動(dòng)態(tài)隊(duì)列么?

沒有空間的時(shí)候會(huì)開辟空間,這難道還會(huì)產(chǎn)生假溢出么?

的確,當(dāng)進(jìn)行動(dòng)態(tài)創(chuàng)建隊(duì)列的時(shí)候,也只不過是向后繼續(xù)不斷的申請(qǐng)內(nèi)存空間;

即使前面出隊(duì)操作釋放掉了前面的空間,但是指針依舊會(huì)向后進(jìn)行移動(dòng),直到達(dá)到系統(tǒng)預(yù)留給程序的內(nèi)存上界被強(qiáng)行終止;

這對(duì)于極為頻繁的隊(duì)列操作和程序而言是致命的,這時(shí)候,就需要對(duì)我們的隊(duì)列進(jìn)行優(yōu)化,使用更為優(yōu)秀的結(jié)構(gòu)——循環(huán)隊(duì)列。

循環(huán)隊(duì)列就是將隊(duì)列存儲(chǔ)空間的最后一個(gè)位置轉(zhuǎn)而繞到第一個(gè)位置,形成邏輯上的環(huán)狀空間,以此來供隊(duì)列循環(huán)使用,如下圖。

循環(huán)隊(duì)列就是給定我們隊(duì)列的大小范圍,在原有隊(duì)列的基礎(chǔ)上,只要隊(duì)列的后方滿了,就從這個(gè)隊(duì)列的前面開始進(jìn)行插入,以達(dá)到重復(fù)利用空間的效果;

由于循環(huán)隊(duì)列的設(shè)計(jì)思維更像一個(gè)環(huán),因此常使用一個(gè)環(huán)圖來表示,但我們需要注意,實(shí)際上循環(huán)隊(duì)列不是一個(gè)真正的環(huán),它依舊是單線性的。

循環(huán)隊(duì)列的結(jié)構(gòu)設(shè)計(jì)

由于循環(huán)對(duì)列給定了數(shù)據(jù)范圍的大小,所以不需要使用鏈?zhǔn)降膭?dòng)態(tài)創(chuàng)建方法了。

因?yàn)槿绻褂面準(zhǔn)酱鎯?chǔ),會(huì)無法確定何時(shí)再回到隊(duì)頭進(jìn)行插入操作,所以我們采用模擬的方法,如圖所示:

其中,data表示一個(gè)數(shù)據(jù)域,int為類型,其可以修改為任意自定義的類型,比如說簡(jiǎn)單的char,float類型等等,也可以是復(fù)雜的結(jié)構(gòu)體類型。

maxsize表示循環(huán)隊(duì)列的最大容納量,其表示隊(duì)列的全部可操作空間。

rear代表尾指針,入隊(duì)時(shí)移動(dòng)。

front代表頭指針,出隊(duì)時(shí)移動(dòng)。

其代碼可以表示為:

#definemaxsize10//表示循環(huán)隊(duì)列的最大容量 //循環(huán)隊(duì)列的結(jié)構(gòu)設(shè)計(jì) typedefstructcir_queue{ intdata[maxsize]; intrear; intfront; }cir_queue;

循環(huán)隊(duì)列的初始化

循環(huán)隊(duì)列的初始化核心就在于申請(qǐng)空間,并且將front指針和rear指針內(nèi)容賦值為0,即指向第0個(gè)元素即可,這里要注意第 0個(gè)元素內(nèi)容為空,如下圖所示:

其代碼可以表示為:

//初始化 cir_queue*init(){ cir_queue*q=(cir_queue*)malloc(sizeof(cir_queue)); if(q==NULL){ exit(0);//申請(qǐng)內(nèi)存失敗,退出程序 } q->front=0; q->rear=0; returnq; }

入隊(duì)操作

入隊(duì)操作同順序隊(duì)列的方法,直接將rear向后移動(dòng)即可。

但是要注意判斷,如果rear達(dá)到了隊(duì)列的空間上線,將要從頭繼續(xù)開始移動(dòng)。

這里推薦使用余數(shù)法,即無論如何求余都是在這片空間內(nèi)進(jìn)行操作,防止一次錯(cuò)誤執(zhí)行就直接整體崩潰,而且也相對(duì)而言更為簡(jiǎn)潔,不推薦使用if語句,這樣顯得比較累贅。

入隊(duì)操作

注意進(jìn)行加一移動(dòng)位置操作的時(shí)候,不能直接q->rear++這樣的操作,這樣計(jì)算機(jī)判斷優(yōu)先級(jí)會(huì)產(chǎn)生讓自己意想不到的后果。

此外這里還需要進(jìn)行一次是否隊(duì)列已滿的判斷,當(dāng)我們r(jià)ear指針的下一個(gè)位置就是front的位置的時(shí)候,即改循環(huán)隊(duì)列已滿。

如圖:

隊(duì)列已滿

其代碼可以表示為:

//入隊(duì)操作push voidpush(cir_queue*q,intdata){ if((q->rear+1)%maxsize==q->front){ printf("溢出,無法入隊(duì) "); return; }else{ q->rear=(q->rear+1)%maxsize; q->data[q->rear]=data; } }

出隊(duì)操作

如果順序隊(duì)列的出隊(duì)操作,直接將front進(jìn)行后移一位即可。

這里上面很多地方都提過了,有一個(gè)需要留意的地方,即隊(duì)列是否為空,當(dāng)隊(duì)列為空的時(shí)候是無法進(jìn)行出隊(duì)操作的。

出隊(duì)操作

其代碼可以表示為:

//出隊(duì)操作pop voidpop(cir_queue*q){ if(q->rear==q->front){ printf("隊(duì)列為空,無法出隊(duì) "); return; }else{ q->data[q->front]=0; q->front=(q->front+1)%maxsize; } }

遍歷操作

遍歷操作需要借助一個(gè)臨時(shí)變量?jī)?chǔ)存位置front的位置信息,利用i逐步向后移動(dòng),直到i到達(dá)了rear的位置即可宣告遍歷的結(jié)束。

//遍歷隊(duì)列 voidprint(cir_queue*q){ inti=q->front; while(i!=q->rear){ i=(i+1)%maxsize; printf("%d ",q->data[i]); } printf(" ");//記得換行 }

關(guān)于隊(duì)列的總結(jié)

請(qǐng)牢記這句話:隊(duì)列是一個(gè)先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    41143
  • 隊(duì)列
    +關(guān)注

    關(guān)注

    1

    文章

    46

    瀏覽量

    11167
  • 鏈表
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    10964

原文標(biāo)題:真香!20張圖揭開「隊(duì)列」的迷霧,一目了然

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)38:隊(duì)列管理功能驗(yàn)證與分析2

    波形如圖1 所示。 創(chuàng)建深度為 1024 的 I/O 提交隊(duì)列, 由于支持的最大隊(duì)列深度為 1023, 所以創(chuàng)建返回狀態(tài) cr_status 值為 4, 表示創(chuàng)建深度錯(cuò)誤, 仿真行為符合設(shè)計(jì)預(yù)期
    發(fā)表于 10-15 08:14

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)37:隊(duì)列管理功能驗(yàn)證與分析1

    本文主要交流設(shè)計(jì)思路,在本博客已給出相關(guān)博文九十多篇,希望對(duì)初學(xué)者有用。注意這里只是拋磚引玉,切莫認(rèn)為參考這就可以完成商用IP設(shè)計(jì)。若有產(chǎn)品或項(xiàng)目需求,請(qǐng)看B站視頻后聯(lián)系 隊(duì)列管理功能主要包含創(chuàng)建
    發(fā)表于 10-13 11:17

    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之九:隊(duì)列管理模塊(上)

    這是采用PCIe設(shè)計(jì)NVMe,并非調(diào)用XDMA方式,后者在PCIe4.0時(shí)不大方便,故團(tuán)隊(duì)直接采用PCIe設(shè)計(jì),結(jié)合UVM驗(yàn)證加快設(shè)計(jì)速度。 隊(duì)列管理模塊采用隊(duì)列的存儲(chǔ)與控制分離的設(shè)計(jì)結(jié)構(gòu)。
    的頭像 發(fā)表于 08-04 09:53 ?503次閱讀
    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之九:<b class='flag-5'>隊(duì)列</b>管理模塊(上)

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)十:隊(duì)列管理模塊設(shè)計(jì)(下)

    ?續(xù)上,隊(duì)列管理模塊采用隊(duì)列的存儲(chǔ)與控制分離的設(shè)計(jì)結(jié)構(gòu),如圖1所示為隊(duì)列管理模塊的結(jié)構(gòu)框圖。 ?編輯 圖1 隊(duì)列管理結(jié)構(gòu) 由于提交隊(duì)列管理單
    發(fā)表于 07-30 16:27

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)九:隊(duì)列管理模塊設(shè)計(jì)(上)

    設(shè)計(jì),結(jié)合UVM驗(yàn)證加快設(shè)計(jì)速度。隊(duì)列管理模塊采用隊(duì)列的存儲(chǔ)與控制分離的設(shè)計(jì)結(jié)構(gòu),如圖1所示為隊(duì)列管理模塊的結(jié)構(gòu)框圖。 圖1隊(duì)列管理模塊結(jié)構(gòu)圖對(duì)于提交
    發(fā)表于 07-27 17:41

    RabbitMQ消息隊(duì)列解決方案

    在現(xiàn)代分布式系統(tǒng)架構(gòu)中,消息隊(duì)列作為核心組件,承擔(dān)著系統(tǒng)解耦、異步處理、流量削峰等重要職責(zé)。RabbitMQ作為一款成熟的消息隊(duì)列中間件,以其高可用性、高可靠性和豐富的特性,成為眾多企業(yè)的首選方案。本文將從運(yùn)維工程師的角度,詳細(xì)闡述RabbitMQ從單機(jī)部署到集群搭建的完
    的頭像 發(fā)表于 07-08 15:55 ?350次閱讀

    從 app_gatt_callback調(diào)用這個(gè)隊(duì)列推送函數(shù)時(shí),程序出現(xiàn)了硬故障怎么解決?

    我正在嘗試在 wiced BLE 堆棧中使用基于演員的設(shè)計(jì)模式。 因此,所有任務(wù)都使用消息隊(duì)列相互通信。 消息隊(duì)列將保存塊大小為 64 的內(nèi)存池指針的地址。 我維護(hù)著一個(gè)由這些池地址指針組成的隊(duì)列
    發(fā)表于 07-04 06:03

    精通 MQTT:消息隊(duì)列遙測(cè)傳輸指南!

    引言MQTT(消息隊(duì)列遙測(cè)傳輸)是一種輕量級(jí)消息協(xié)議,專為低帶寬、高延遲和不可靠的網(wǎng)絡(luò)環(huán)境設(shè)計(jì)。它廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)應(yīng)用、消息系統(tǒng)以及實(shí)時(shí)數(shù)據(jù)通信領(lǐng)域。本指南深入探討了MQTT的工作原理
    的頭像 發(fā)表于 06-16 16:56 ?700次閱讀
    精通 MQTT:消息<b class='flag-5'>隊(duì)列</b>遙測(cè)傳輸指南!

    RDMA簡(jiǎn)介5之RoCE V2隊(duì)列分析

    在RoCE v2協(xié)議中,RoCE v2隊(duì)列是數(shù)據(jù)傳輸?shù)淖畹讓涌刂茩C(jī)制,其由工作隊(duì)列(WQ)和完成隊(duì)列(CQ)共同組成。其中工作隊(duì)列采用雙向通道設(shè)計(jì),包含用于存儲(chǔ)即將發(fā)送數(shù)據(jù)的發(fā)送
    發(fā)表于 06-05 17:28

    QDMA Subsystem for PCI Express v5.0產(chǎn)品指南

    AMD QDMA Subsystem for PCI Express( PCIe )旨在利用多隊(duì)列概念實(shí)現(xiàn)高性能 DMA,以搭配 PCI Express Integrated Block 一起
    的頭像 發(fā)表于 05-13 09:21 ?570次閱讀
    QDMA Subsystem for PCI Express v5.0產(chǎn)品指南

    NVME控制器之隊(duì)列管理模塊

    隊(duì)列管理模塊是整個(gè)NVMe Host控制器的核心模塊,該模塊實(shí)現(xiàn)了提交隊(duì)列與完成隊(duì)列的管理,多隊(duì)列請(qǐng)求的仲裁判決等功能。隊(duì)列管理模塊中含有數(shù)
    發(fā)表于 05-03 20:19

    NVME控制器之隊(duì)列管理模塊

    隊(duì)列管理模塊是整個(gè)NVMe Host控制器的核心模塊,該模塊實(shí)現(xiàn)了提交隊(duì)列與完成隊(duì)列的管理,多隊(duì)列請(qǐng)求的仲裁判決等功能。隊(duì)列管理模塊中含有數(shù)
    的頭像 發(fā)表于 05-03 15:32 ?326次閱讀
    NVME控制器之<b class='flag-5'>隊(duì)列</b>管理模塊

    JavaWeb消息隊(duì)列使用指南

    在現(xiàn)代的JavaWeb應(yīng)用中,消息隊(duì)列(Message Queue)是一種常見的技術(shù),用于異步處理任務(wù)、解耦系統(tǒng)組件、提高系統(tǒng)性能和可靠性。 1. 消息隊(duì)列的基本概念 消息隊(duì)列是一種應(yīng)
    的頭像 發(fā)表于 11-25 09:27 ?765次閱讀

    探索字節(jié)隊(duì)列的魔法:多類型支持、函數(shù)重載與線程安全

    探索字節(jié)隊(duì)列的魔法:多類型支持、函數(shù)重載與線程安全代碼難度指數(shù):文章學(xué)習(xí)重點(diǎn):參數(shù)宏的使用技巧一、引言在嵌入式系統(tǒng)和實(shí)時(shí)應(yīng)用中,數(shù)據(jù)的傳輸和處理是至關(guān)重要的。字節(jié)隊(duì)列(ByteQueue)是一種重要
    的頭像 發(fā)表于 11-15 01:08 ?1403次閱讀
    探索字節(jié)<b class='flag-5'>隊(duì)列</b>的魔法:多類型支持、函數(shù)重載與線程安全

    為什么同一個(gè)隊(duì)列引用的全局變量,運(yùn)行在兩個(gè)子vi中發(fā)現(xiàn)隊(duì)列數(shù)據(jù)丟失了

    我創(chuàng)建了一個(gè)隊(duì)列,然后將隊(duì)列引用做了個(gè)全局變量,運(yùn)行在兩個(gè)子vi中,一個(gè)是只入隊(duì)列,另一個(gè)是只出隊(duì)列。但我發(fā)現(xiàn),一個(gè)字vi數(shù)據(jù)入隊(duì)列成功,檢
    發(fā)表于 11-14 11:47