?簡述同步與異步鸯檬、阻塞與非阻塞

圖片發(fā)自簡書App

一、簡述

? 最近對javasrcip的運行機制有在研究螺垢,這里是對一些知識點對一下拓展和展開倡勇,之前有記錄過關于線程和進程的相關點馍盟,在學習過程中,有試過查閱網上的資料,網上資料感覺比較零散说墨,有和同學互相討論過,這次來記錄一下對IO事件里面的「同步」「異步」「阻塞」和「非阻塞」的一些學習迹淌。

后面越理解越覺得是接觸到一個比較大的領域顷牌,對于客戶端的JavaScript和nodeJS加深了自己的理解,在這里做一下自己的一些理解返劲。

二玲昧、定義

? 其實在思考這個問題的時候,有一個疑問就是:

同步篮绿、異步與阻塞孵延、非阻塞,這四種概念會不會是屬于IO層(當然是IO接口)的一個范疇之類的亲配?

? 于是我?guī)е@個疑問進行了一次驗證和學習尘应,希望能有一個比較清晰的理解。

先在這里理清楚4個概念:

PART 1:同步吼虎、異步【代碼指令的執(zhí)行順序】

同步:當程序代碼在執(zhí)行IO操作的時候犬钢,必須要等待上一個IO操作完成之后才能進行下一步操作的過程。

? 舉個例子:現在有A代碼指令和B代碼指令思灰,A代碼指令先于B代碼指令被操作娜饵,如果B指令代碼想要執(zhí)行的條件是A指令代碼先執(zhí)行完,那就叫做同步官辈。

?? 這里說一下就是箱舞,很多時候,我們覺得代碼一行行下來執(zhí)行就是同步拳亿,其實這樣的想法是錯的晴股,就我目前接觸的代碼很多時候是一行一行執(zhí)行,但是這是沒有一些IO操作的情況下肺魁,當遇到文件讀寫电湘、數據庫之類等等之類的情況時,這就不是一行一行代碼執(zhí)行了,不同的語言有不同的內部運行機制寂呛,javascript的運行機制就是一個例子怎诫。

下面是使用javasrcipt編寫的demo.


圖片發(fā)自簡書App
圖片發(fā)自簡書App

異步:當程序代碼在執(zhí)行IO操作的時候,不必等待上一個IO操作完后才執(zhí)行的過程贷痪。

? 舉個例子:現在有A代碼指令和B代碼指令幻妓,A代碼指令位置先于B代碼指令被操作,如果B指令代碼執(zhí)行的條件是不需要去等待A指令代碼先執(zhí)行完劫拢,而是可以在A代碼指令在等待或者執(zhí)行的過程中肉津,B指令代碼已經在執(zhí)行或者執(zhí)行完,那就叫做異步舱沧。

圖片發(fā)自簡書App

PART 1總結:

由此可見妹沙,同步和異步是在用戶層面進行操作,是在代碼指令的執(zhí)行順序進行談及熟吏。

PART 2:阻塞距糖、非阻塞【進程和線程的執(zhí)行與調用過程】

阻塞 :當應用進程開始執(zhí)行時或者被系統調用的時候,如果當前應用進程途中遇到被操作系統掛起等待另外一個應用進程執(zhí)行完才能繼續(xù)執(zhí)行的情況牵寺,或者如果當前應用進程內部的線程被調用時遇到被操作系統掛起等待另外一個線程執(zhí)行完才能繼續(xù)執(zhí)行的情況悍引,就叫阻塞。

? 舉個例子:使用javascript去編寫不含異步操作的代碼缸剪,那編寫得出來的代碼就是一個阻塞的操作,因為javascript本身就是單線程語言东亦。例如上圖給出的圖片杏节。

圖片發(fā)自簡書App

?記住單線程同步處理IO就是阻塞操作;

?記住單線程同步處理IO就是阻塞操作典阵;

?記住單線程同步處理IO就是阻塞操作奋渔;

?但是同步異步 與 阻塞非阻塞 二者之間并沒有必然的關系

非阻塞 :當應用進程開始執(zhí)行時或者被系統調用的時候,如果當前應用進程途中不需要等待其他應用進程完成才執(zhí)行的情況壮啊,或者當前應用進程中的進程不需要等待其他線程完成才去執(zhí)行的情況嫉鲸,這個過程叫作非阻塞。

? 舉個例子:nodeJs是一個異步非阻塞的IO模型歹啼,文件讀寫是一個異步操作玄渗,然后同時也是一個非阻塞的操作。如下圖所示狸眼。

圖片發(fā)自簡書App

?這個程序是先執(zhí)行step 1藤树,但是stpe 2 在step1執(zhí)行的過程中也是在執(zhí)行,是不需要等待step 1先執(zhí)行完在執(zhí)行的拓萌,是一個非阻塞的操作岁钓。

???PART 3:同步異步 與 阻塞非阻塞 二者之間并沒有必然的關系

同步異步 與 阻塞非阻塞 二者之間并沒有必然的關系,他們是可以互相組合的。

圖片發(fā)自簡書App

Linux經典的IO模型有詳細講解屡限,可以參考《unix環(huán)境高級編程》《unix網絡編程》這兩本書品嚣。

分別有詳細講解關于,CPU層級的IO模型和網絡編程上的IO模型钧大。

如果有不對的地方翰撑,請一定要指出哈~

關于同步、異步拓型、阻塞和非阻塞额嘿,所涉及的東西比較多,可能我了解的不夠深劣挫,可能在這里說不完整册养,希望以后有深的理解,繼續(xù)更新這篇文章压固。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末球拦,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子帐我,更是在濱河造成了極大的恐慌坎炼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拦键,死亡現場離奇詭異谣光,居然都是意外死亡,警方通過查閱死者的電腦和手機芬为,發(fā)現死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門萄金,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人媚朦,你說我怎么就攤上這事氧敢。” “怎么了询张?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵孙乖,是天一觀的道長。 經常有香客問我份氧,道長唯袄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任蜗帜,我火速辦了婚禮越妈,結果婚禮上,老公的妹妹穿的比我還像新娘钮糖。我一直安慰自己梅掠,他們只是感情好酌住,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阎抒,像睡著了一般酪我。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上且叁,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天都哭,我揣著相機與錄音,去河邊找鬼逞带。 笑死欺矫,一個胖子當著我的面吹牛,可吹牛的內容都是我干的展氓。 我是一名探鬼主播穆趴,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼遇汞!你這毒婦竟也來了未妹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤空入,失蹤者是張志新(化名)和其女友劉穎络它,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體歪赢,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡化戳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了埋凯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片点楼。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖递鹉,靈堂內的尸體忽然破棺而出盟步,到底是詐尸還是另有隱情藏斩,我是刑警寧澤躏结,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站狰域,受9級特大地震影響媳拴,放射性物質發(fā)生泄漏。R本人自食惡果不足惜兆览,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一屈溉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抬探,春花似錦子巾、人聲如沸帆赢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椰于。三九已至,卻和暖如春仪搔,著一層夾襖步出監(jiān)牢的瞬間瘾婿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工烤咧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留偏陪,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓煮嫌,卻偏偏與公主長得像笛谦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子立膛,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容