AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

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

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

大家好,我是小風(fēng)哥。K3I28資訊網(wǎng)——每日最新資訊28at.com

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

我們以函數(shù)調(diào)用為例,假設(shè)有這樣的代碼:K3I28資訊網(wǎng)——每日最新資訊28at.com

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

代碼非常簡單,B函數(shù)讀取一個(gè)文件,文件里保存的是一行行數(shù)據(jù),然后加和,A函數(shù)中的某個(gè)位置調(diào)用B函數(shù)。K3I28資訊網(wǎng)——每日最新資訊28at.com

此時(shí),我們說這是同步調(diào)用,因?yàn)锳函數(shù)后續(xù)代碼必須等待B函數(shù)處理完文件才能繼續(xù)執(zhí)行。K3I28資訊網(wǎng)——每日最新資訊28at.com

隨著業(yè)務(wù)不斷發(fā)展,B函數(shù)處理的文件越來越龐大,此時(shí)處理一次文件耗時(shí)2小時(shí),假設(shè)A函數(shù)后還有一行重要的代碼:K3I28資訊網(wǎng)——每日最新資訊28at.com

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

這就意味著調(diào)用B函數(shù)后需要等待2個(gè)小時(shí)才能執(zhí)行到something_important這行代碼,而something_important函數(shù)對(duì)時(shí)間要求非??量?,該怎樣改進(jìn)呢?K3I28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)很簡單,我們可以在B函數(shù)內(nèi)部創(chuàng)建一個(gè)線程,在線程中處理文件:K3I28資訊網(wǎng)——每日最新資訊28at.com

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

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

如果是在單核系統(tǒng)下,CPU會(huì)不斷在處理文件線程和A函數(shù)線程間切換,看上去這兩個(gè)線程就好像在同時(shí)運(yùn)行,但如果是在多核系統(tǒng)下,這兩個(gè)線程可以真正的并行起來。K3I28資訊網(wǎng)——每日最新資訊28at.com

在編程語境下,異步往往和線程進(jìn)程等相關(guān)。K3I28資訊網(wǎng)——每日最新資訊28at.com

最后舉一個(gè)例子。K3I28資訊網(wǎng)——每日最新資訊28at.com

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

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

好啦,這篇就到這里,希望對(duì)大家有所幫助。K3I28資訊網(wǎng)——每日最新資訊28at.com

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

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

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

下一篇: Bind、Call、Apply的區(qū)別?如何實(shí)現(xiàn)bind

標(biāo)簽:
  • 熱門焦點(diǎn)
Top