一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

1、初識(shí)size_t

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

值得我們注意得是:

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

poYBAGL1qh6AYh20AAAj7JvUFGA004.png

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

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

隊(duì)列—

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

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

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

隊(duì)列的類型:

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

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

首先我們先貼上剛剛寫好的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類型的指針,能夠指向任意數(shù)據(jù)類型來擴(kuò)展我們的隊(duì)列。

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

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

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

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

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

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



審核編輯:劉清

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

    關(guān)注

    33

    文章

    8993

    瀏覽量

    153690
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141587
  • 多線程
    +關(guān)注

    關(guān)注

    0

    文章

    279

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    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 ?171次閱讀

    從 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ì)列遙測傳輸指南!

    引言MQTT(消息隊(duì)列遙測傳輸)是一種輕量級消息協(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 ?470次閱讀
    精通 MQTT:消息<b class='flag-5'>隊(duì)列</b>遙測傳輸指南!

    RDMA簡介6之RoCEV2連接管理

    ? RoCE v2協(xié)議的隊(duì)列在創(chuàng)建時(shí)就已確定連接類型,共有兩種工作模式:主要分為兩種工作模式:有連接模式和無連接模式。在有連接模式下,支持可靠連接(RC)和不可靠連接(UC)兩種傳輸類型;而無連接
    發(fā)表于 06-13 09:50

    向FreeRTOS的任務(wù)中發(fā)送事件隊(duì)列是有什么限制嗎?

    到了TMC的芯片,但是在到位上報(bào)的信息中少了卡死電機(jī)的上報(bào)。所以有的電機(jī)的到位中斷并沒有成功寫入任務(wù)。 一開始是每個(gè)電機(jī)都開啟了一個(gè)定時(shí)器查詢,后續(xù)改成一個(gè)定時(shí)器查六個(gè)電機(jī)并將定時(shí)器的周期加到50ms,就很少會(huì)卡死。 所以向FreeRTOS的任務(wù)中發(fā)送事件隊(duì)列是有什么限制
    發(fā)表于 06-11 07:57

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

    工作隊(duì)列元素(WQE),該元素包括數(shù)據(jù)發(fā)送緩沖區(qū)的起始地址、數(shù)據(jù)長度、操作類型等相關(guān)信息,用于后續(xù)的傳輸操作。在該WQE被網(wǎng)卡操作結(jié)束后,網(wǎng)卡將生成一個(gè)CQE并放入與工作隊(duì)列(SQ)對應(yīng)的完成
    發(fā)表于 06-05 17:28

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

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

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

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

    不受環(huán)境限制,MEMS尋北儀助力各領(lǐng)域實(shí)現(xiàn)高精度定向

    尋北儀可以通過地球自轉(zhuǎn)確定真北方向,可以為各種活動(dòng)提供方位基準(zhǔn)。它不受天氣、地點(diǎn)和磁場環(huán)境條件的限制,具有高精度、高可靠性和易于維護(hù)的特點(diǎn)?。
    的頭像 發(fā)表于 12-18 14:41 ?791次閱讀
    <b class='flag-5'>不受</b>環(huán)境<b class='flag-5'>限制</b>,MEMS尋北儀助力各領(lǐng)域<b class='flag-5'>實(shí)現(xiàn)</b>高精度定向

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

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

    探索字節(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 ?1231次閱讀
    探索字節(jié)<b class='flag-5'>隊(duì)列</b>的魔法:多<b class='flag-5'>類型</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

    eBPF技術(shù)實(shí)踐之virtio-net網(wǎng)卡隊(duì)列可觀測

    時(shí),這一路徑難以進(jìn)行觀測。一些復(fù)雜的網(wǎng)絡(luò)抖動(dòng)問題很可能是由于網(wǎng)卡隊(duì)列不正常工作引起的。為了解決這類問題,我們基于eBPF技術(shù)擴(kuò)展了網(wǎng)卡隊(duì)列的可觀測能力,使得virtio網(wǎng)卡前后端的定界問題不再困擾。 virtio-net 前后端驅(qū)動(dòng)簡介 virtio-net (后面稱為
    的頭像 發(fā)表于 11-14 11:18 ?671次閱讀
    eBPF技術(shù)實(shí)踐之virtio-net網(wǎng)卡<b class='flag-5'>隊(duì)列</b>可觀測

    嵌入式環(huán)形隊(duì)列與消息隊(duì)列實(shí)現(xiàn)原理

    嵌入式環(huán)形隊(duì)列,也稱為環(huán)形緩沖區(qū)或循環(huán)隊(duì)列,是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),用于在固定大小的存儲(chǔ)區(qū)域中高效地存儲(chǔ)和訪問數(shù)據(jù)。其主要特點(diǎn)包括固定大小的數(shù)組和兩個(gè)指針(頭指針和尾指針),分別指向隊(duì)列的起始位置和結(jié)束位置。
    的頭像 發(fā)表于 09-02 15:29 ?1242次閱讀

    玩轉(zhuǎn)RT-Thread之消息隊(duì)列的應(yīng)用

    在嵌入式系統(tǒng)開發(fā)中,實(shí)時(shí)處理串口和ADC數(shù)據(jù)是一項(xiàng)重要的任務(wù)。本文將介紹如何在RT-Thread實(shí)時(shí)操作系統(tǒng)中,利用消息隊(duì)列來同時(shí)處理來自串口和ADC的數(shù)據(jù)。通過這種方法,我們能夠高效地管理和處理
    的頭像 發(fā)表于 07-23 08:11 ?910次閱讀
    玩轉(zhuǎn)RT-Thread之消息<b class='flag-5'>隊(duì)列</b>的應(yīng)用