日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

徹底理解異步編程!你理解了嗎?

來源: 責編: 時間:2024-03-18 09:41:29 190觀看
導讀大家好,我是小風哥。之前很多同學在微信上問能不能講講異步編程是怎么一回事兒,今天就和大家簡單聊一聊這個話題。我們以函數調用為例,假設有這樣的代碼:void B() { lines = read(filename); sum(lines);}void A() { .

大家好,我是小風哥。WtF28資訊網——每日最新資訊28at.com

之前很多同學在微信上問能不能講講異步編程是怎么一回事兒,今天就和大家簡單聊一聊這個話題。WtF28資訊網——每日最新資訊28at.com

我們以函數調用為例,假設有這樣的代碼:WtF28資訊網——每日最新資訊28at.com

void B() {  lines = read(filename);  sum(lines);}void A() {  ...  B();  ...}

代碼非常簡單,B函數讀取一個文件,文件里保存的是一行行數據,然后加和,A函數中的某個位置調用B函數。WtF28資訊網——每日最新資訊28at.com

此時,我們說這是同步調用,因為A函數后續代碼必須等待B函數處理完文件才能繼續執行。WtF28資訊網——每日最新資訊28at.com

隨著業務不斷發展,B函數處理的文件越來越龐大,此時處理一次文件耗時2小時,假設A函數后還有一行重要的代碼:WtF28資訊網——每日最新資訊28at.com

void A() {  ...  B();  something_important();  ...}

這就意味著調用B函數后需要等待2個小時才能執行到something_important這行代碼,而something_important函數對時間要求非常苛刻,該怎樣改進呢?WtF28資訊網——每日最新資訊28at.com

其實很簡單,我們可以在B函數內部創建一個線程,在線程中處理文件:WtF28資訊網——每日最新資訊28at.com

void handle_file() {  lines = read(filename);  sum(lines);}void B() {  thread t(handle_file);}void A() {  ...  B();  something_important();  ...}

這樣B函數被調用后創建完線程即可立即返回,緊接著開始執行something_important這行代碼,CPU在執行something_important這行代碼時可能文件還沒有開始處理,這樣函數A不再依賴于文件處理,這時我們說函數B函數就是異步調用的,函數A異步于文件處理。WtF28資訊網——每日最新資訊28at.com

如果是在單核系統下,CPU會不斷在處理文件線程和A函數線程間切換,看上去這兩個線程就好像在同時運行,但如果是在多核系統下,這兩個線程可以真正的并行起來。WtF28資訊網——每日最新資訊28at.com

在編程語境下,異步往往和線程進程等相關。WtF28資訊網——每日最新資訊28at.com

最后舉一個例子。WtF28資訊網——每日最新資訊28at.com

同步就好比你排隊去自助售票機取電影票(話說小風哥已經很久很久沒有去電影院看電影了),你必須排隊等待前一個人取完電影票才能到你,你不能在前一個取票的過程中取自己的票,這時我們說取電影票時你和前一個人是同步的。WtF28資訊網——每日最新資訊28at.com

而異步就好比去吃大餐,你在座位上看菜單點菜,其它人也可以點菜,你不需要等待其它人吃完飯才能下單,這時我們說你點菜和其它人吃飯是異步的。WtF28資訊網——每日最新資訊28at.com

好啦,這篇就到這里,希望對大家有所幫助。WtF28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-76519-0.html徹底理解異步編程!你理解了嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 2024編程新趨勢:JavaScript高手的秘密武器Rust

下一篇: Bind、Call、Apply的區別?如何實現bind

標簽:
  • 熱門焦點
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • Python異步IO編程的進程/線程通信實現

    這篇文章再講3種方式,同時講4中進程間通信的方式一、 Python 中線程間通信的實現方式共享變量共享變量是多個線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內直播,
  • 國行版三星Galaxy Z Fold5/Z Flip5發布 售價7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國發布會,正式在國內推出了新一代折疊屏智能手機三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • AI芯片初創公司Tenstorrent獲三星和現代1億美元投資

    Tenstorrent是一家由芯片行業資深人士Jim Keller領導的加拿大初創公司,專注于開發人工智能芯片,該公司周三表示,已經從現代汽車集團和三星投資基金等
  • 外交部:美方應停止在網絡安全問題上不負責任地指責他國

      中國外交部今天(16日)舉行例行記者會。會上,有記者問,美國情報官員稱,他們正在阻攔來自中國以及其他國家的黑客獲取相關科研成果。 中方對此有何評論?對此
Top 主站蜘蛛池模板: 新河县| 班玛县| 依安县| 忻城县| 金门县| 郯城县| 通化县| 仁寿县| 专栏| 天门市| 满洲里市| 栾川县| 班戈县| 尚义县| 泰兴市| 濮阳县| 那坡县| 永靖县| 墨竹工卡县| 鄂州市| 龙胜| 高陵县| 蓬安县| 广河县| 浏阳市| 苍溪县| 阳新县| 莱阳市| 富锦市| 伊吾县| 义乌市| 福海县| 大悟县| 卓尼县| 邵阳县| 屏东市| 苏尼特左旗| 永清县| 乐陵市| 晴隆县| 灵武市|