成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發(fā) 前端
如果是在單核系統(tǒng)下,CPU會(huì)不斷在處理文件線程和A函數(shù)線程間切換,看上去這兩個(gè)線程就好像在同時(shí)運(yùn)行,但如果是在多核系統(tǒng)下,這兩個(gè)線程可以真正的并行起來(lái)。

大家好,我是小風(fēng)哥。

之前很多同學(xué)在微信上問(wèn)能不能講講異步編程是怎么一回事兒,今天就和大家簡(jiǎn)單聊一聊這個(gè)話題。

我們以函數(shù)調(diào)用為例,假設(shè)有這樣的代碼:

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


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

代碼非常簡(jiǎn)單,B函數(shù)讀取一個(gè)文件,文件里保存的是一行行數(shù)據(jù),然后加和,A函數(shù)中的某個(gè)位置調(diào)用B函數(shù)。

此時(shí),我們說(shuō)這是同步調(diào)用,因?yàn)锳函數(shù)后續(xù)代碼必須等待B函數(shù)處理完文件才能繼續(xù)執(zhí)行。

隨著業(yè)務(wù)不斷發(fā)展,B函數(shù)處理的文件越來(lái)越龐大,此時(shí)處理一次文件耗時(shí)2小時(shí),假設(shè)A函數(shù)后還有一行重要的代碼:

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

這就意味著調(diào)用B函數(shù)后需要等待2個(gè)小時(shí)才能執(zhí)行到something_important這行代碼,而something_important函數(shù)對(duì)時(shí)間要求非常苛刻,該怎樣改進(jìn)呢?

其實(shí)很簡(jiǎn)單,我們可以在B函數(shù)內(nèi)部創(chuàng)建一個(gè)線程,在線程中處理文件:

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í)可能文件還沒(méi)有開始處理,這樣函數(shù)A不再依賴于文件處理,這時(shí)我們說(shuō)函數(shù)B函數(shù)就是異步調(diào)用的,函數(shù)A異步于文件處理。

如果是在單核系統(tǒng)下,CPU會(huì)不斷在處理文件線程和A函數(shù)線程間切換,看上去這兩個(gè)線程就好像在同時(shí)運(yùn)行,但如果是在多核系統(tǒng)下,這兩個(gè)線程可以真正的并行起來(lái)。

在編程語(yǔ)境下,異步往往和線程進(jìn)程等相關(guān)。

最后舉一個(gè)例子。

同步就好比你排隊(duì)去自助售票機(jī)取電影票(話說(shuō)小風(fēng)哥已經(jīng)很久很久沒(méi)有去電影院看電影了),你必須排隊(duì)等待前一個(gè)人取完電影票才能到你,你不能在前一個(gè)取票的過(guò)程中取自己的票,這時(shí)我們說(shuō)取電影票時(shí)你和前一個(gè)人是同步的。

而異步就好比去吃大餐,你在座位上看菜單點(diǎn)菜,其它人也可以點(diǎn)菜,你不需要等待其它人吃完飯才能下單,這時(shí)我們說(shuō)你點(diǎn)菜和其它人吃飯是異步的。

好啦,這篇就到這里,希望對(duì)大家有所幫助。

責(zé)任編輯:武曉燕 來(lái)源: 碼農(nóng)的荒島求生
相關(guān)推薦

2019-12-26 09:15:44

網(wǎng)絡(luò)IOLinux

2024-02-02 09:00:14

內(nèi)存泄漏對(duì)象

2023-11-07 08:19:35

IO多路復(fù)用磁盤、

2022-10-20 18:43:32

C語(yǔ)言golang安全

2021-03-19 07:59:33

紅黑樹面試數(shù)據(jù)

2022-05-03 00:03:11

狀態(tài)管理前端開發(fā)

2012-11-30 11:19:02

JavaScript

2018-03-21 16:19:40

MVCMVPMVVM

2023-09-07 08:15:58

場(chǎng)景同步異步

2022-03-27 09:06:25

vuexActionsMutations

2019-09-16 08:32:59

遞歸算法編程

2020-04-16 10:55:03

Java虛擬機(jī)字節(jié)碼

2020-06-29 08:32:21

高并發(fā)程序員流量

2019-09-18 10:12:37

遞歸數(shù)據(jù)結(jié)構(gòu)

2023-01-12 11:23:11

Promise異步編程

2021-09-07 07:55:22

Linux CPULinux 系統(tǒng)

2025-05-29 08:39:24

三次握手四次揮手TCP

2025-05-15 09:50:39

ServiceKubernetes運(yùn)維

2021-05-13 08:55:33

Android架構(gòu)功能

2009-05-18 10:57:35

.NETString特性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日日夜夜精品视频 | 91精品国产色综合久久 | 国产一级视屏 | 一级片免费视频 | 欧美亚洲激情 | 日本黄色的视频 | 精品视频在线免费观看 | 国产精品亚洲一区 | 国产精品一区二区三区在线 | 九色国产 | 91丨九色丨国产在线 | 黄在线| 日韩免费一区二区 | 国产一区二区免费电影 | 中文字幕日韩一区 | 在线第一页 | 免费不卡一区 | 久久青 | 狠狠插狠狠操 | 综合色站导航 | 51ⅴ精品国产91久久久久久 | 97精品视频在线观看 | a级毛片基地 | 日操操夜操操 | 在线视频一区二区 | 日韩国产中文字幕 | 久久久国产视频 | 亚洲人成人一区二区在线观看 | 国产99久久久国产精品 | 五月婷婷激情网 | 欧美三级成人理伦 | 日韩一区二区在线视频 | 九九热久久免费视频 | 国产一区二区三区 | 欧美国产精品 | 国产一区二区影院 | 国产精品久久久久久久免费观看 | 欧美一级免费 | 亚洲一区视频在线播放 | 一区二区三区日韩精品 | 国产乡下妇女做爰 |