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

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

虹科分享|關于阻塞函數(shù)和非阻塞函數(shù)

虹科汽車電子 ? 2022-07-05 14:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關于阻塞函數(shù)和非阻塞函數(shù)

CAN和LIN相關的開發(fā)庫里,不可避免的會出現(xiàn)“收”和“發(fā)”的函數(shù)。如何快速有效的處理數(shù)據(jù),是開發(fā)中重要的事項。但實際上單路CAN由于波特率的限制,數(shù)據(jù)量并不會很大:以常用的500k為例,如果按照總線負載率為30%左右,那么需要在1ms處理1~2次數(shù)據(jù)即可。相比之下常用的以太網(wǎng)一般都要在100M的速率以上了。


c9d32c48-f95b-11ec-a2f4-dac502259ad0.png

因為系統(tǒng)的底層,例如WINDOWS,在處理文件、串口等使用的是同樣的函數(shù),所以CAN、LIN處理起來可以運用這些相關的經(jīng)驗?;貧w到正題,讀寫函數(shù)可以分為阻塞函數(shù)和非阻塞函數(shù)兩種,它們處理起來的方式是不一樣的。

阻塞函數(shù)(blocking):在執(zhí)行時會阻塞當前線程,通常會有一個超時時間。

非阻塞函數(shù)(non-blocking):不會阻塞當前線程,直接返回結果,通常會有一個對應的緩存。

讓我們舉兩個例子說明:

在UDS的API中獲取ECU返回的數(shù)據(jù)采用阻塞函數(shù)。例如,我們在用27服務獲取seed,如果我們沒有成功獲取seed,那么接下來的步驟也無法進行下去。所以阻塞函數(shù)會迫使我們去等待結果;如果執(zhí)行失敗,需要做錯誤處理,例如重新嘗試進行獲取。

如果阻塞函數(shù)的超時時間設置為0,就會和非阻塞函數(shù)類似(有些阻塞函數(shù)超時時間為0,可能意味著永遠也讀不到數(shù)據(jù)了,因為它們總是想要讀取來自“未來”的內容)。

在底層的basic API中,CAN的接收采用了非阻塞函數(shù),設備將把讀到的數(shù)據(jù)放到緩存里,而函數(shù)將從緩存里讀取數(shù)據(jù)。如果緩存里沒有數(shù)據(jù),函數(shù)會立刻返回無數(shù)據(jù),而不會等待“不確定的”下一個數(shù)據(jù)。也就是說無論何種情況,函數(shù)都會立刻返回結果。

在我們處理CAN數(shù)據(jù)時,可以周期性(例如20ms)讀取數(shù)據(jù),讀到無數(shù)據(jù)之后,做其它的事情,例如通過dbc獲取信號值并顯示。函數(shù)不會等待20ms直到新的CAN幀出現(xiàn)在總線上,也防止了丟幀的情況。因為普通的CAN通信,我們無法在程序層面判斷何時會接收到新的數(shù)據(jù)。

另外,有時我們也會想要保證數(shù)據(jù)是“新的”,而不是躺在緩存里不知道多久之前的內容,那么在讀取數(shù)據(jù)前先清空緩存會是一個不錯的選擇。

END

虹科車輛網(wǎng)絡

虹科車輛網(wǎng)絡事業(yè)部在汽車總線行業(yè)經(jīng)驗超過10年,與世界知名的CAN、LIN總線供應商PEAK-System、Lipowsky、IHR等合作10年之久,提供領域內頂尖水平的CAN/LIN分析儀和測試方案,同時也提供汽車以太網(wǎng),時間敏感網(wǎng)絡(TSN)的仿真測試工具和方案。虹科自主研發(fā)的EOL測試軟硬件系統(tǒng)已經(jīng)在業(yè)內完成多次安裝和測試,事業(yè)部所有成員都受過國內外專業(yè)培訓,并獲得專業(yè)資格認證工程師平均5年+技術經(jīng)驗和水平,一致贏得客戶極好口碑。虹科車輛網(wǎng)絡事業(yè)部致力于為您提供最專業(yè)的服務。

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

    關注

    3

    文章

    4381

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    posix函數(shù)異常怎么解決?

    測試發(fā)現(xiàn)所有和絕對時間相關的函數(shù)都是異常的 這該怎么解決目前測試過的有 mq_timedreceive mq_timedsend sem_timedwait pthread_cond_timedwait pselect 全都是異常的 要不然就立即返回 要不然就一直阻塞
    發(fā)表于 06-12 07:48

    在testbench中如何使用阻塞賦值和阻塞賦值

    本文詳細闡述了在一個testbench中,應該如何使用阻塞賦值與阻塞賦值。首先說結論,建議在testbench中,對時鐘信號(包括分頻時鐘)使用阻塞賦值,對其他同步信號使用
    的頭像 發(fā)表于 04-15 09:34 ?660次閱讀
    在testbench中如何使用<b class='flag-5'>阻塞</b>賦值和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b>賦值

    解鎖TSMaster fifo函數(shù):報文讀取的高效方法

    前言:TSMaster目前有兩種讀取報文的模式:回調函數(shù)模式和fifo模式。fifo函數(shù)是TSMaster近期新增的函數(shù),本文將重點介紹fifo模塊。關于回調
    的頭像 發(fā)表于 03-14 20:04 ?473次閱讀
    解鎖TSMaster fifo<b class='flag-5'>函數(shù)</b>:報文讀取的高效方法

    “串口阻塞”你真的會用嗎?

    很久才會發(fā)出來,一下子出來很多數(shù)據(jù)”。經(jīng)過幫客戶檢查應用程序源碼,發(fā)現(xiàn)應用程序在串口阻塞方面沒有做正確的處理,修改后解決。阻塞打開串口open("/dev/tty
    的頭像 發(fā)表于 02-13 11:42 ?763次閱讀
    “串口<b class='flag-5'>阻塞</b>”你真的會用嗎?

    關于4G模組LuatOS開發(fā):通用加解密函數(shù)(crypto)|全攻略

    本次我要說的攻略是關于4G模組LuatOS開發(fā)的通用加解密函數(shù),我以我常用的Air780E模組為例子供大家參考。
    的頭像 發(fā)表于 11-30 09:52 ?872次閱讀
    <b class='flag-5'>關于</b>4G模組LuatOS開發(fā):通用加解密<b class='flag-5'>函數(shù)</b>(crypto)|全攻略

    一文解讀Linux 5種IO模型

    Linux里有五種IO模型:阻塞IO、阻塞IO、多路復用IO、信號驅動式IO和異步IO,我發(fā)現(xiàn)這五種IO模型,其實能和吃飯這件事關聯(lián)起來。 阻塞IO(Blocking I/O)
    的頭像 發(fā)表于 11-09 11:12 ?864次閱讀
    一文解讀Linux 5種IO模型

    TPA3004功放,開機保護,聲音阻塞,為什么?

    TPA3004功放,開機保護,聲音阻塞。過一段時間,芯片發(fā)熱后正常。詢求問題解決方法
    發(fā)表于 11-08 08:30

    socket編程中的阻塞阻塞

    在網(wǎng)絡編程中, socket 是一個非常重要的概念,它提供了一個抽象層,使得開發(fā)者可以不必關心底層的網(wǎng)絡通信細節(jié)。 socket 編程中的阻塞阻塞模式是兩種不同的操作方式,它們對程序的響應性
    的頭像 發(fā)表于 11-01 16:13 ?753次閱讀

    SUMIF函數(shù)與SUMIFS函數(shù)的區(qū)別

    SUMIF函數(shù)和SUMIFS函數(shù)都是Excel中用于條件求和的函數(shù),它們可以幫助用戶根據(jù)特定的條件對數(shù)據(jù)進行求和。盡管它們的基本功能相似,但在使用場景和功能上存在一些差異。以下是對這兩個函數(shù)
    的頭像 發(fā)表于 10-30 09:51 ?7533次閱讀

    Verilog HDL的基礎知識

    本文繼續(xù)介紹Verilog HDL基礎知識,重點介紹賦值語句、阻塞阻塞、循環(huán)語句、同步與異步、函數(shù)與任務語法知識。
    的頭像 發(fā)表于 10-24 15:00 ?1205次閱讀
    Verilog HDL的基礎知識

    如何由系統(tǒng)函數(shù)求頻率響應

    頻率響應函數(shù)表征了測試系統(tǒng)對給定頻率下的穩(wěn)態(tài)輸出與輸入的關系,可以通過系統(tǒng)函數(shù)(或稱為傳遞函數(shù))來求解。以下是由系統(tǒng)函數(shù)求頻率響應的步驟: 一、理解系統(tǒng)
    的頭像 發(fā)表于 10-18 09:32 ?3558次閱讀

    SystemView上下文統(tǒng)計窗口識別阻塞原因

    SystemView工具可以記錄嵌入式系統(tǒng)的運行時行為,實現(xiàn)可視化的深入分析。在新發(fā)布的v3.54版本中,增加了一項新功能:上下文統(tǒng)計窗口,提供了對任務運行時統(tǒng)計信息的深入分析,使用戶能夠徹底檢查每個任務,幫助開發(fā)人員識別阻塞原因。
    的頭像 發(fā)表于 08-20 11:31 ?703次閱讀

    socket阻塞阻塞的區(qū)別是什么

    在計算機編程中,socket 是一種通信端點,用于在網(wǎng)絡中進行數(shù)據(jù)傳輸。Socket 可以是阻塞的或阻塞的,這兩種模式在處理數(shù)據(jù)傳輸時有不同的行為。 阻塞模式(Blocking Mo
    的頭像 發(fā)表于 08-16 11:13 ?1245次閱讀

    面試???1:函數(shù)指針與指針函數(shù)、數(shù)組指針與指針數(shù)組

    在嵌入式開發(fā)領域,函數(shù)指針、指針函數(shù)、數(shù)組指針和指針數(shù)組是一些非常重要但又容易混淆的概念。理解它們的特性和應用場景,對于提升嵌入式程序的效率和質量至關重要。一、指針函數(shù)函數(shù)指針指針
    的頭像 發(fā)表于 08-10 08:11 ?1463次閱讀
    面試???1:<b class='flag-5'>函數(shù)</b>指針與指針<b class='flag-5'>函數(shù)</b>、數(shù)組指針與指針數(shù)組

    求助,關于CyU3PUsbHostEpWaitForCompletion函數(shù)中的阻塞問題求解

    主線程)調用該函數(shù)時,CyU3PUsbHostEpWaitForCompletion 函數(shù)經(jīng)常阻塞,雖然指定了超時值,但從未返回。 我想應該在主程序線程中調用該
    發(fā)表于 07-23 07:57