亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 關(guān)于node同步異步

瀏覽:76日期:2023-09-08 09:37:47

問題描述

javascript - 關(guān)于node同步異步

這是來自深入淺出NodeJS一書的

為什么說異步耗時(shí)取決于最慢的文件就算是異步,不也是單線程,需要一個(gè)任務(wù)執(zhí)行完再執(zhí)行下一個(gè)么取決于最慢的文件不就是說這兩個(gè)代碼是同時(shí)執(zhí)行的?

問題解答

回答1:

同步I/O 是 1->2->3->4 這樣的時(shí)間,為1+2+3+4的時(shí)間

異步I/O 是 --> 1234四個(gè)同時(shí)開始 時(shí)間為4個(gè)里面最慢的那個(gè)。。

還有js單線程只是你寫的那些基本的js代碼為單線程,一但是基本的網(wǎng)絡(luò)或者文件I/O,的時(shí)候會(huì)進(jìn)入事件循環(huán),進(jìn)行并發(fā)操作。。。1234 是同時(shí)開始的。誰也不等誰。

回答2:

同時(shí)進(jìn)行的,互不干擾。

回答3:

node.js異步任務(wù)底層是多線程實(shí)現(xiàn)的,對于一個(gè)異步任務(wù),node維護(hù)一個(gè)線程池,一個(gè)異步任務(wù)從線程池中取出一個(gè)線程去執(zhí)行,執(zhí)行完后,將線程放回線程池

回答4:

同時(shí)進(jìn)行和同步是兩回事情!同步是指按事情執(zhí)行的前后順序!后者必須依賴前者的結(jié)果!異步是同時(shí)進(jìn)行但是事情之間的聯(lián)系對于整個(gè)流程來說影響不大!好比同時(shí)進(jìn)行多個(gè)ajax 請求你的目的只是為了請求數(shù)據(jù)后展示數(shù)據(jù)之間并沒有任何關(guān)聯(lián)。打個(gè)比方吧!就好比修路!肯定是先鋪瀝青再去劃線!不然你邊鋪路邊畫線就把鋪好的路給搞砸了!這時(shí)必須同步異步就會(huì)一團(tuán)糟!但是劃線和道路清理和道路圍欄的安裝這些事情可以同時(shí)進(jìn)行就是所謂的異步并不會(huì)影響結(jié)果但是也會(huì)出現(xiàn)快慢因?yàn)榘惭b圍欄的復(fù)雜度高相比其他操作的慢但是最后還是完成了整個(gè)流程!反過來看如果你把后三者都按同步處理等待時(shí)間就會(huì)更加長因?yàn)槎家戎耙徊教幚淼粼偃ヌ幚砗笠徊?!但是之?0個(gè)人修路由于后期要處理三件事情要想實(shí)現(xiàn)異步必須增加到30人就好比我們增加了計(jì)算機(jī)的開銷一樣(不太專業(yè)這里),但是往往計(jì)算資源過剩我們這樣異步就很好利用了計(jì)算資源!

回答5:

一個(gè)程序,同一時(shí)刻,能利用CPU多核并行執(zhí)行多個(gè)任務(wù),底層不是多線程就是多進(jìn)程.

Node的底層是libuv.

對于網(wǎng)絡(luò)讀寫(I/O),libuv在Linux上用的是內(nèi)核提供的epoll機(jī)制.Linux內(nèi)核epoll的底層應(yīng)該是使用內(nèi)核線程實(shí)現(xiàn)的,不過epoll的底層實(shí)現(xiàn)不需要libuv關(guān)心,libuv只需調(diào)用.

對于文件讀寫(I/O),libuv可能使用Linux AIO,也可能自己用多線程實(shí)現(xiàn).因?yàn)長inux內(nèi)核提供的異步文件讀寫機(jī)制AIO主要還是為數(shù)據(jù)庫服務(wù)的,比如MySQL就依賴libaio.so.目前的Kernel AIO僅支持O_DIRECT方式(DirectIO)來對磁盤讀寫.這意味著,程序無法利用系統(tǒng)的緩存Page Cache,同時(shí)它要求讀寫的的大小和偏移要以區(qū)塊的方式對齊.對于大文件讀寫可能還好,小文件不太適合.所以libuv應(yīng)該是自己在底層用多線程來實(shí)現(xiàn)異步文件讀寫.

不管是網(wǎng)絡(luò)讀寫還是文件讀寫,程序總是要返回的,什么時(shí)候返回,肯定是所有任務(wù)處理完成后返回,所以耗時(shí)一般是讀寫時(shí)間最長的那個(gè)任務(wù).不過,文件讀寫可能受限于磁盤IOPS,不可避免會(huì)產(chǎn)生阻塞,這時(shí)整體耗時(shí)可能會(huì)更長.

Node用于服務(wù)器編程或者服務(wù)器中間層編程時(shí),主要還是發(fā)生網(wǎng)絡(luò)讀寫.

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 国产三级毛片视频 | 欧美高清免费精品国产自 | 精品欧美一区二区vr在线观看 | 131美女爽爽爽爱做视频 | 久久亚洲精品国产精品777777 | 日本黄色大片在线观看 | 国产欧美在线亚洲一区刘亦菲 | 香港a毛片免费全部播放 | 国产露脸对白刺激3p在线 | 亚洲热图 | 又黄又爽视频 | 欧美 日韩 中文字幕 | 在线观看免费国产视频 | 99热在线只有精品 | 色视频在线观看网站 | 欧美在线精品一区二区在线观看 | 丰满美女福利视频在线播放 | 在线观看欧美大片 | 99热精品国产三级在线观看 | 亚洲一区二区三区四区在线观看 | 拍拍拍美女黄色1000视频 | 黄色三级小视频 | 久久美女精品国产精品亚洲 | 欧美国产亚洲精品高清不卡 | 青青久久精品国产免费看 | 一区二区成人国产精品 | 麻豆短视频传媒网站怎么找 | 一级一片在线播放在线观看 | 污污美女网站 | 精品视频第一页 | 91孕妇精品一区二区三区 | 一级黄色绿像片 | 欧美日韩一区二区三区免费不卡 | 色噜噜狠狠在爱丁香 | 神马午夜51| 日日干日日操 | 国产精品福利无圣光在线一区 | 欧美三级中文字幕 | 这里只有精品99re在线 | 青青草国产精品欧美成人 | 女的被到爽的羞羞视频 |