簡體   English   中英

在Node.js中,如果我正在寫一個長時間運行的函數,我應該使用setTimeout

[英]In Node.js, If i am writing a long running function should I be using setTimeout

或其他什么來排隊我的其余功能? 並使用回調或節點自動處理?

我想我需要啟動我的代碼,如果還有其他事情需要發生,我應該放棄我的函數控制來給其他事件控制。 是這樣的嗎? 或者我可以吝嗇,節點會在我用足夠的時間后切斷我的功能嗎?

謝謝。

如果您的長時間運行功能確實執行了很多I / O,請確保以非阻塞方式執行此操作。 這就是node.js實現並發的方式,即使它只有一個線程:只要任何任務需要等待某事,另一個任務就會獲得CPU。

如果你的長時間運行的函數需要不間斷的CPU時間(或者不能異步地進行I / O),那么你可能需要分出一個單獨的進程,否則每個人都必須等到你完成。

或者我可以吝嗇,節點會在我用足夠的時間后切斷我的功能嗎?

不,這是完全合作的多任務處理。 節點不能搶占你。

您應該將長時間運行的函數或需要很長時間才能執行的代碼放入單獨的進程中,因為它可以在執行此代碼/函數時阻止其他傳入請求。 來自node.js網站:

但是多處理器並發呢? 將程序擴展到多核計算機不是必需的線程嗎? 您可以通過child_process.fork()啟動新進程,這些其他進程將並行調度。

我建議觀看這些文章/演示文稿,以便對此主題進行更全面的了解:

暫無
暫無

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

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