女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

嵌入式開發軟件中回調函數的使用

strongerHuang ? 來源:最后一個bug ? 作者:最后一個bug ? 2022-04-29 08:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式開發軟件中回調函數是經常接觸的一種軟件設計方法,像我們的事件處理機制基本上都會使用到回調函數。

那么就抽了點時間來聊聊他們:

什么是回調函數?

C語言中,回調函數其實與函數指針的調用在語法上并沒有太大的差異,而為什么叫回調函數主要還是從功能上給它起的名字,即這個函數會被"返回來調用"。

而這里所謂的“返回”就涉及到一個方向性問題,從哪里來到哪里去。而在軟件中通常就是與“分層設計思想”掛鉤的。

在軟件設計領域分層設計方式是非常廣泛的,在嵌入式中最簡單的分層就是兩層"驅動層"和“應用層”。

4bcec1ec-c754-11ec-bce3-dac502259ad0.png

當函數功能上進行分層以后不應該直接在底層驅動中直接調用應用層函數等,比如應用程序通過調用驅動層接口獲得物理量數據,我們常規的做法大部分都是不斷的輪詢相應的API接口返回數據,這樣可能會導致不斷的IO操作,效率相對比較低下。

那么應用程序是否可以化主動為被動呢,一直舔狗實在是太累了?既然你現在不想搭理我,那等你準備好了,再來告訴我吧,到時候調用我給你的函數就可以了,這個函數已經放在了傳給你的函數指針里了,那么這里應用程序所給的函數就是回調函數。

比如我們經常會在應用程序中查詢按鍵是否被按下,然后得編寫一大堆的時序等等,還與應用邏輯耦合在一起。

其實按鍵是是如何檢測被按下的過程對于應用程序它并關心,底層程序查詢確定好狀態給應用程序一個是否按下的通知或者狀態即可。

此時底層按鍵檢測程序要通知應用程序,就可以通過相應的回調函數來通知應用層并處理即可。

如果還有點難理解,可以看看stm32使用hal庫,你會發現在中斷中有大量的回調函數指針被調用,其實回調函數的效果與中斷服務函數的執行效果是類似的,hal庫中使用回調函數的方式把中斷的相關事件服務處理交給了用戶自身來注冊。

把中斷看成一種事件類型,那么回調函數的使用其實就類似于一種事件驅動機制。

同步與異步調用

首先要理清楚這兩種方式需要理解什么是同步和異步。

同步調用表示當調用一個底層接口,必須回調函數被執行完畢,不然該接口會一直處于堵塞狀態沒辦法返回結果,且程序無法往下執行。

異步調用表示當調用一個底層接口以后,不需要等待回調函數執行完畢,便可以直接返回繼續做下面的事情,最終底層準備好以后便會執行回調函數處理應用層事務,所以我們也稱這種回調函數為異步回調函數。

而異步調用的好處在于調用函數不需要阻塞可以繼續執行,從而大大提高程序運行效率,但由于異步回調函數在時間上是無序的,導致當我們需要異步調用函數能夠順序執行時便會存在難度,使得業務邏輯比較復雜,難以理解。

為了保證回調的有序性,就需要以上一次回調的結果作為本次異步調用的條件,導致代碼一層嵌套一層非常的冗長,類似于ifelse里面再嵌套ifelse之勢,所以也很多人稱這種方式為 Callback hell(回調地獄)。

為了改善這種結構,通常會采用協程的概念去處理異步回調來規避該問題。對于異步調用常與多線程進行結合,在另外一個線程中執行異步操作,然后調用回調函數返回結果并繼續處理。

原文標題:嵌入式軟件中回調函數同步與異步調用

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅

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

    關注

    5146

    文章

    19598

    瀏覽量

    316259
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    141001
  • 回調函數
    +關注

    關注

    0

    文章

    88

    瀏覽量

    11863

原文標題:嵌入式軟件中回調函數同步與異步調用

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ARM嵌入式系統開發軟件設計與優化

    ARM嵌入式系統開發軟件設計與優化
    發表于 02-03 11:31

    嵌入式單片機開發軟件CodeWarrior怎么下載?如何安裝?

    嵌入式單片機開發軟件CodeWarrior怎么下載?如何安裝?
    發表于 10-09 09:04

    什么是嵌入式傳統開發軟件直接控制硬件

    什么是嵌入式傳統開發軟件直接控制硬件,比如51單片機開發,在開發軟件的時候還要兼顧硬件知識,這樣的開發模式主要有兩點缺點.1:
    發表于 11-05 07:07

    嵌入式web服務器boa-0.94.13開發軟件

    嵌入式web服務器boa-0.94.13開發軟件
    發表于 03-11 09:48 ?26次下載

    Ubuntu嵌入式開發環境的建立

    嵌入式開發一般使用交叉開發環境,即上位機開發軟件然后下載到在下位機運行。1.1. 上位機軟件開發環境的構建我主要使用Ubuntu 8.04進行開發
    發表于 07-10 14:49 ?38次下載

    arm開發軟件使用教程

    arm開發軟件使用教程
    發表于 02-08 00:52 ?28次下載

    工業用SBCS嵌入式開發軟件的選擇技巧

    已經開發了許多開發工具和支持的硬件和軟件產品,以幫助減少嵌入式開發風險,加快從小型消費設備到高性能工業控制和遙感設備等各種產品的上市時間。
    發表于 10-30 17:38 ?5次下載
    工業用SBCS<b class='flag-5'>嵌入式開發軟件</b>的選擇技巧

    嵌入式軟件開發是什么該如何理解

    對于嵌入式開發軟件來說,可以把嵌入式軟件開發分成2個工作崗位。一個是應用開發,另一個是底層開發
    發表于 09-18 17:19 ?2.2w次閱讀

    嵌入式系統仿真開發軟件proteus8.9的安裝教程資料免費下載

    本文檔的主要內容詳細介紹的是嵌入式系統仿真開發軟件proteus8.9的安裝教程資料免費下載。
    發表于 04-08 08:00 ?71次下載
    <b class='flag-5'>嵌入式</b>系統仿真<b class='flag-5'>開發軟件</b>proteus8.9的安裝教程資料免費下載

    嵌入式Linux內核驅動開發學習路線圖

    嵌入式Linux內核驅動開發學習路線圖(嵌入式開發軟件工程師)-嵌入式Linux內核驅動開發學習路線圖? ? ? ? ? ? ??
    發表于 07-30 13:51 ?12次下載
    <b class='flag-5'>嵌入式</b>Linux內核驅動<b class='flag-5'>開發</b>學習路線圖

    嵌入式模擬題

    嵌入式模擬題(嵌入式開發軟件)-嵌入式模擬題? ? ? ? ? ? ? ? ? ?
    發表于 07-30 14:32 ?20次下載
    <b class='flag-5'>嵌入式</b>模擬題

    淺談嵌入式開發

    ?①軟件的移植性差。②軟件開發人員必須懂硬件。③軟件的功能性差,在這里指的是用戶體驗和功能差。4.嵌入式開發與傳統開發的區別是什么呢?是否移
    發表于 10-20 14:50 ?2次下載
    淺談<b class='flag-5'>嵌入式開發</b>

    嵌入式開發概述

    什么是嵌入式傳統開發軟件直接控制硬件,比如51單片機開發,在開發軟件的時候還要兼顧硬件知識,這樣的開發模式主要有兩點缺點.1:
    發表于 11-02 19:21 ?15次下載
    <b class='flag-5'>嵌入式開發</b>概述

    嵌入式開發概述(20190325小結)

    一.嵌入式開發概述:嵌入式:在已有硬件上移植操作系統,解決軟硬件耦合度高導致的問題。(打個比方:軟件的實現是為了調用open()函數,那么嵌入式開發
    發表于 11-02 21:05 ?15次下載
    <b class='flag-5'>嵌入式開發</b>概述(20190325小結)

    ??嵌入式調函數的實現方法

    調函數的命名規范沒有固定的標準,但是根據通用慣例和編碼規范,調函數的命名應該能夠反映
    發表于 03-04 14:49 ?1121次閱讀