91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

什么是隊(duì)列?不受類(lèi)型限制的隊(duì)列如何實(shí)現(xiàn)

冬至配餃子 ? 來(lái)源:最后一個(gè)bug ? 作者:bug菌 ? 2022-08-12 09:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、初識(shí)size_t

這里可能大部分都不太知道有size_t這樣的一個(gè)數(shù)據(jù)類(lèi)型,可以說(shuō)該類(lèi)型是英文size type的一個(gè)縮寫(xiě),它是一種記錄數(shù)據(jù)大小的數(shù)據(jù)類(lèi)型(可以認(rèn)為是一種整形數(shù)據(jù))。其實(shí)我們經(jīng)常使用的sizeof()的返回值數(shù)據(jù)類(lèi)型就是size_t,只是我們常常用一個(gè)整形比如int來(lái)保存返回值。

值得我們注意得是:

sizeof類(lèi)型是一個(gè)與操作系統(tǒng)相關(guān)得數(shù)據(jù)類(lèi)型,它主要是為了提高C語(yǔ)言的可移植性和可讀性而加入的,可以說(shuō)它并不是一種基本的數(shù)據(jù)類(lèi)型,而且在頭文件中用typedef來(lái)重命名的數(shù)據(jù)類(lèi)型。其實(shí)在我們平時(shí)很多地方都用到了size_t,比如:

poYBAGL1qh6AYh20AAAj7JvUFGA004.png

我們使用的時(shí)候幾乎都用整形比如int變量來(lái)使用,并沒(méi)有使用到size_t類(lèi)型,所以說(shuō)盡管我們的int依賴(lài)于C編譯器,有些情況size_t并不是固定的,如果我們用基本類(lèi)型替換可能帶來(lái)數(shù)據(jù)類(lèi)型過(guò)小或者過(guò)大的問(wèn)題,過(guò)小可能會(huì)導(dǎo)致數(shù)據(jù)溢出問(wèn)題,過(guò)大可能導(dǎo)致運(yùn)行速度降低!
size_t的使用:只要是用到sizeof等返回值,或者傳入值的變量都定義為size_t類(lèi)型!

2、什么是隊(duì)列?

隊(duì)列—

一種特殊的操作受限制得線(xiàn)性表,用戶(hù)僅允許在線(xiàn)性表的頭部獲取數(shù)據(jù),在尾部插入數(shù)據(jù),所以大家也叫FIFO(先進(jìn)先出)線(xiàn)性表。

形象一點(diǎn)的表達(dá)

:類(lèi)似于一隊(duì)人排隊(duì)鉆進(jìn)一根只能進(jìn)入一個(gè)人的管子,先進(jìn)去的人先出來(lái),后面的人只能在從同一個(gè)口子進(jìn)入!

隊(duì)列的類(lèi)型:

順序隊(duì)列和循環(huán)隊(duì)列。順序隊(duì)列,出隊(duì)列指針必須>或者=入隊(duì)列指針,否則容易出現(xiàn)假溢出現(xiàn)象;而循環(huán)隊(duì)列只要入隊(duì)列指針與出隊(duì)列指針不再次重合就不回溢出!

3、不受類(lèi)型限制的隊(duì)列實(shí)現(xiàn)

首先我們先貼上剛剛寫(xiě)好的Queue.h和Queue.c文件

poYBAGL1qnqAMV7gAAFKVcP9Sws614.png

pYYBAGL1qoGAYmiJAAFDHSF_4Hc866.png

poYBAGL1qoaACHUeAAESAE9aqkQ694.png

pYYBAGL1qo2AYiJoAAC53sBnHt8401.png

poYBAGL1qrqAIybVAADqgoePl0s061.pngpoYBAGL1qsGAbHMXAADP9acB7uY706.png

解析代碼:

1)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)中采用void類(lèi)型的指針,能夠指向任意數(shù)據(jù)類(lèi)型來(lái)擴(kuò)展我們的隊(duì)列。

2)隊(duì)列數(shù)組順序隊(duì)列,我們可以通過(guò)修改擴(kuò)展變成循環(huán)隊(duì)列,便于我們使用。

3)具體的使用可以參考上面的例子進(jìn)行開(kāi)發(fā)。

4、隊(duì)列的應(yīng)用

1)隊(duì)列可以作為一種數(shù)據(jù)緩沖,當(dāng)我們的數(shù)據(jù)無(wú)法實(shí)時(shí)進(jìn)行發(fā)送的時(shí)候,可以進(jìn)行適當(dāng)?shù)年?duì)列緩沖,集中到一定的數(shù)據(jù),然后進(jìn)行打包發(fā)送。

2)隊(duì)列可以實(shí)現(xiàn)任務(wù)之間的一個(gè)信息交互,可以解決一些多線(xiàn)程問(wèn)題,實(shí)現(xiàn)一種任務(wù)之間的異步處理。

3)由于是隊(duì)列的一個(gè)先進(jìn)先出特點(diǎn),我們也可以利用隊(duì)列來(lái)嚴(yán)格的控制數(shù)據(jù)的順序。



審核編輯:劉清

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

    關(guān)注

    33

    文章

    9521

    瀏覽量

    157050
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145614
  • 多線(xiàn)程
    +關(guān)注

    關(guān)注

    0

    文章

    279

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    RDMA設(shè)計(jì)43:隊(duì)列刪除及連接斷開(kāi)功能測(cè)試

    在接收到正確的刪除隊(duì)列請(qǐng)求后,首先進(jìn)入連接斷開(kāi)流程,即四次揮手?jǐn)噫?如圖中紅框部分。隨后進(jìn)行隊(duì)列刪除操作。返回隊(duì)列操作狀態(tài) 0x2b,符合設(shè)計(jì)預(yù)期,驗(yàn)證通過(guò)。
    的頭像 發(fā)表于 02-24 07:50 ?554次閱讀
    RDMA設(shè)計(jì)43:<b class='flag-5'>隊(duì)列</b>刪除及連接斷開(kāi)功能測(cè)試

    RDMA設(shè)計(jì)40:隊(duì)列管理及連接建立功能驗(yàn)證與分析

    隊(duì)列關(guān)聯(lián),并設(shè)置隊(duì)列容量和傳輸類(lèi)型。新建的 QP 此時(shí)還不能直接使用。 注冊(cè)內(nèi)存區(qū)域(MR) 新創(chuàng)建的 QP 處于初始重置狀態(tài),需要依次切換到初始化狀態(tài)、準(zhǔn)備接收狀態(tài),最終進(jìn)入準(zhǔn)備發(fā)送狀態(tài)。在這個(gè)過(guò)程中
    發(fā)表于 02-13 10:15

    RDMA設(shè)計(jì)25:隊(duì)列管理模塊之發(fā)送模塊詳細(xì)設(shè)計(jì)分析

    發(fā)送隊(duì)列存儲(chǔ)為所有發(fā)送隊(duì)列共用的存儲(chǔ)空間,根據(jù)用戶(hù)環(huán)境和開(kāi)發(fā)板環(huán)境不同可由 BRAM、URAM 或 LUTRAM 實(shí)現(xiàn)。發(fā)送隊(duì)列管理單元?jiǎng)t負(fù)責(zé)管理這個(gè)存儲(chǔ)空間,并處理用戶(hù)指令和發(fā)送
    的頭像 發(fā)表于 01-25 16:27 ?3373次閱讀
    RDMA設(shè)計(jì)25:<b class='flag-5'>隊(duì)列</b>管理模塊之發(fā)送模塊詳細(xì)設(shè)計(jì)分析

    RDMA設(shè)計(jì)26:隊(duì)列管理模塊設(shè)計(jì)之接收隊(duì)列模塊詳細(xì)分析

    本文主要交流設(shè)計(jì)思路,在本博客已給出相關(guān)博文100多篇,希望對(duì)初學(xué)者有用。注意這里只是拋磚引玉,切莫認(rèn)為參考這就可以完成商用IP設(shè)計(jì)。 (2)接收隊(duì)列 接收隊(duì)列由一個(gè)接收隊(duì)列管理單元組成。與發(fā)送
    發(fā)表于 01-22 09:03

    RDMA設(shè)計(jì)24:隊(duì)列管理模塊設(shè)計(jì)

    隊(duì)列管理模塊采用管理與存儲(chǔ)分離的結(jié)構(gòu)進(jìn)行設(shè)計(jì),由發(fā)送隊(duì)列存儲(chǔ)、發(fā)送隊(duì)列管理、接收隊(duì)列管理、完成條目解析、異常完成條目處理和 Round-Robin 仲裁組成。
    的頭像 發(fā)表于 01-20 11:45 ?1378次閱讀
    RDMA設(shè)計(jì)24:<b class='flag-5'>隊(duì)列</b>管理模塊設(shè)計(jì)

    RDMA設(shè)計(jì)18:隊(duì)列管理模塊設(shè)計(jì)3

    本文主要交流設(shè)計(jì)思路,在本博客已給出相關(guān)博文140多篇,希望對(duì)初學(xué)者有用。注意這里只是拋磚引玉,切莫認(rèn)為參考這就可以完成商用IP設(shè)計(jì)。 (3)完成隊(duì)列 完成隊(duì)列的管理由完成條目解析單元和異常完成條目
    發(fā)表于 01-05 09:04

    RDMA設(shè)計(jì)17:隊(duì)列管理模塊設(shè)計(jì)2

    。 (2)接收隊(duì)列 接收隊(duì)列由一個(gè)接收隊(duì)列管理單元組成。與發(fā)送隊(duì)列類(lèi)似的是,接收隊(duì)列管理單元也由若干表單構(gòu)成,其中包括 RQ1 表單和用戶(hù)
    發(fā)表于 01-04 14:54

    C語(yǔ)言的循環(huán)隊(duì)列

    循環(huán)隊(duì)列(Circular Buffer) typedef struct { int buffer[SIZE]; int head; int tail; int count
    發(fā)表于 12-12 08:28

    優(yōu)先級(jí)隊(duì)列介紹

    隊(duì)列(Queue)的知識(shí)點(diǎn):「概念」:隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),類(lèi)似于排隊(duì)的概念。「基本操作」:enqueue(item): 將元素添加到隊(duì)列的末尾。dequeue(): 從隊(duì)
    發(fā)表于 11-26 07:56

    基于環(huán)形隊(duì)列的UART收發(fā)回顯實(shí)驗(yàn)

    問(wèn)題。在本實(shí)驗(yàn)中,我們使用環(huán)形隊(duì)列來(lái)實(shí)現(xiàn)實(shí)驗(yàn)1的串口收發(fā)回顯,將串口接收到的數(shù)據(jù)暫存在隊(duì)列中,待完成一次接收后再將隊(duì)列中的數(shù)據(jù)全部發(fā)出去。
    的頭像 發(fā)表于 10-27 13:51 ?1985次閱讀
    基于環(huán)形<b class='flag-5'>隊(duì)列</b>的UART收發(fā)回顯實(shí)驗(yàn)

    NVMe IP高速傳輸卻不依賴(lài)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 ?768次閱讀
    NVMe IP高速傳輸卻不依賴(lài)XDMA設(shè)計(jì)之九:<b class='flag-5'>隊(duì)列</b>管理模塊(上)

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

    條目,一個(gè)提交隊(duì)列管理單元用于實(shí)現(xiàn)提交隊(duì)列存儲(chǔ)地址空間的管理和門(mén)鈴控制。在提交隊(duì)列管理單元中,構(gòu)建一個(gè)admin提交隊(duì)列表單和N個(gè)I/O提交
    發(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 ?634次閱讀

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

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

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

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