亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NodeJS真的是單線程的嗎?

NodeJS真的是單線程的嗎?

炎炎設計 2019-12-25 15:53:40
Node.js通過使用基于事件的模型而不是線程,將基于事件的模型置于其核心,從而解決了“每個連接一個線程的問題”。所有昂貴的I / O操作始終與在啟動操作完成時執行的回調異步執行。如果發生任何操作,則由epoll()之類的多路復用機制處理該觀察。我的問題是:為什么在使用阻塞系統調用select / epoll / kqueue時NodeJS不阻塞?還是根本不是NodeJS單線程,因此需要第二個線程來觀察具有select / epoll / kqueue的所有I / O操作?
查看完整描述

3 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

NodeJS是事件事件(來自網站的第二行),不是單線程的。它在內部處理執行選擇/ epoll / kqueue處理所需的線程,而無需用戶明確地進行管理,但這并不意味著其中沒有線程使用情況。


查看完整回答
反對 回復 2019-12-25
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

沒有。

啟動I / O操作時,它們將委派給libuv,后者使用其自己的(多線程,異步)環境管理請求。libuv宣布I / O操作完成,從而允許將等待此事件的所有回調重新引入主V8線程以執行。

V8- >委托I / O(libuv)->線程池->多線程異步


查看完整回答
反對 回復 2019-12-25
  • 3 回答
  • 0 關注
  • 803 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號