站長資訊網
        最全最豐富的資訊網站

        node都是單線程運行的嗎

        node是單線程運行的,采用單線程異步非阻塞模式;但是嚴格來說node中存在著多種線程,單線程是指node中只有一個js引擎在主線程上運行,其他的異步操作也是有獨立的線程去執行,同時node默認是單線程,一個“node.js”無法利用多核資源。

        node都是單線程運行的嗎

        本教程操作環境:windows10系統、nodejs 12.19.0版本、Dell G3電腦。

        node都是單線程運行的嗎

        node是單線程運行的,采用單線程異步非阻塞模式。

        提到node,我們就可以立刻想到單線程、異步IO、事件驅動等字眼。首先要明確的是node真的是單線程的嗎,如果是單線程的,那么異步IO,以及定時事件(setTimeout、setInterval等)又是在哪里被執行的。

        其實,按照嚴格來說,node并不是單線程的。node中存在著多種線程,包括:

        js引擎執行的線程

        定時器線程(setTimeout, setInterval)

        異步http線程(ajax)

        我們平時所說的單線程是指node中只有一個js引擎在主線程上運行。其他異步IO和事件驅動相關的線程通過libuv來實現內部的線程池和線程調度。libv中存在了一個Event Loop,通過Event Loop來切換實現類似于多線程的效果。簡單的來講Event Loop就是維持一個執行棧和一個事件隊列,當前執行棧中的如果發現異步IO以及定時器等函數,就會把這些異步回調函數放入到事件隊列中。當前執行棧執行完成后,從事件隊列中,按照一定的順序執行事件隊列中的異步回調函數。

        node都是單線程運行的嗎

        上圖中從執行棧,到事件隊列,最后事件隊列中按照一定的順序執行回調函數,整個過程就是一個簡化版的Event Loop。此外回調函數執行時,同樣會生成一個執行棧,在回調函數里面還有可能嵌套異步的函數,也就是說執行棧存在著嵌套。

        也就是說node中的單線程是指js引擎只在唯一的主線程上運行,其他的異步操作,也是有獨立的線程去執行,通過libv的Event Loop實現了類似于多線程的上下文切換以及線程池調度。線程是最小的進程,因此node也是單進程的。這樣就解釋了為什么node是單線程和單進程的。

        推薦學習:《nodejs視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产午夜精品久久久久免费视| 国产精品成人va| 久久精品国产亚洲av影院| 国产福利精品在线观看| 国产精品日本一区二区不卡视频| 久久精品国产只有精品66 | 四虎精品影院4hutv四虎| 伊人久久精品无码二区麻豆| 91午夜精品亚洲一区二区三区 | 国产精品露脸国语对白| 欧美日韩国产中文精品字幕自在自线 | 久久97久久97精品免视看 | 国内精品一级毛片免费看| 乱精品一区字幕二区| 正在播放酒店精品少妇约| 久久精品国产精品亚洲| 高清日韩精品一区二区三区| 国产午夜精品视频| 国产成人精品无码播放| 亚洲av日韩av天堂影片精品| 欧美日韩成人精品久久久免费看 | 无码国产精品一区二区免费3p| 日本一区二区三区精品国产| 国产精品香蕉在线观看| 99精品视频在线观看婷| 2021国产成人精品久久| 亚洲精品线在线观看| 久久er国产精品免费观看2| 国产成人精品免费视| 久久国产美女免费观看精品| 色偷偷888欧美精品久久久| 国产精品vⅰdeoxxxx国产| 无码国内精品人妻少妇| 亚洲Av无码精品色午夜| 亚洲AV成人无码久久精品老人| 亚洲中文久久精品无码| 亚洲码国产精品高潮在线| 最新国产在线精品观看| 无码日韩人妻精品久久蜜桃| 亚洲AV永久无码精品成人| 中文成人无字幕乱码精品区|