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

        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號
        主站蜘蛛池模板: 九九精品免视看国产成人| 2021国产成人精品久久| 亚洲第一精品福利| 欧美成人精品高清在线观看| 国产一区二区三区欧美精品| 2021国产精品成人免费视频| 亚洲精品字幕在线观看| 久久97久久97精品免视看秋霞 | 久久久久人妻一区精品色| 国产综合精品蜜芽| 久久亚洲国产午夜精品理论片| 久久精品亚洲中文字幕无码麻豆| 日韩熟女精品一区二区三区| 精品欧美激情在线看| 国产成人1024精品免费| 91精品国产91久久| 四虎国产精品免费观看| 国产成人精品高清在线观看99| 国产乱码精品一区二区三区中文| 亚洲国产一成人久久精品| 亚洲精品亚洲人成在线观看下载| 国产精品爽爽ⅴa在线观看| 国产精品国产三级在线专区| 精品九九人人做人人爱| 99精品国产在热久久| 国产精品ⅴ无码大片在线看| 精品黑人一区二区三区| 精品人人妻人人澡人人爽人人 | 国内精品免费在线观看| 成人国产精品高清在线观看| 国产精品视频色拍拍| 99精品一区二区三区无码吞精| 国产精品无码午夜福利| 国产女人精品视频国产灰线| 国产精品视频色拍拍| 福利姬在线精品观看| 久久国产精品久久国产精品| 日韩欧美精品不卡| 国产高清在线精品一本大道国产| 国产精品推荐天天看天天爽| 国产偷窥熟女高潮精品视频|