簡體   English   中英

Node.js中的單線程如何真正工作?

[英]How does the single thread in Node.js really work?

我目前正在詳細研究Node.js在幕后的工作方式。 我有一個關於它的單線程體系結構和事件循環的問題。 我已經熟悉了其中的大部分內容,但是有一件事讓我感到困惑。 一位在線講師說,如果在“頂層”代碼中,可以調用一個繁重的同步函數。 我知道它在事件循環甚至開始之前就運行了,但是由於它在單線程上,它是否還阻止其他用戶?

在服務器啟動過程中通常會運行同步操作,這完全可以。 實際上,如果您不打算在服務器啟動中使用同步操作,則啟動代碼可能要復雜得多。

例如, require()操作是同步和阻塞的。 因此,是的,在代碼的服務器啟動部分中使用同步代碼是完全可以的。

但是,一旦服務器啟動,在任何類型的請求處理程序中使用fs.readFileSync()類的同步I / O代碼可能會破壞服務器的可伸縮性。

我知道它在事件循環甚至開始之前就運行了,但是由於它在單線程上,它是否還阻止其他用戶?

如果同步代碼在服務器開始服務請求之前,則沒有其他用戶要阻止。 它只是使服務器運行的代碼的一部分。

如果同步代碼是在服務器開始處理請求之后執行的,那么是的,它將阻止其他代碼在運行同步代碼時被處理,這將是不可取的事情,因為它將大大降低服務器的可伸縮性和響應能力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM