我有一個節點程序,做了很多很重的同步的工作。需要完成的工作很容易分成幾個部分。我想利用我的機器上的所有處理器核心。這可能嗎?我可以使用子進程或羣集在節點中執行自定義函數調用嗎?
表上child processes和clusters的文檔我沒有看到明顯的解決方案。子進程似乎專注於運行外部程序,集羣只能用於傳入的http連接(或者我誤解了這一點?)。
我有一個簡單的功能var output = fn(input)
,只是想多次運行它,將所有的呼叫傳播到我的機器上的核心,並提供回調結果。可以這樣做嗎?
好了,所以基本上你所要說的是,我對孩子的過程和集羣的假設是正確的,如果我想只執行一個功能來做到這一點,我需要把它放在一個獨立的腳本,我還是做一個服務器,只是執行函數調用並通過本地http請求獲取響應? –
沒錯,node.js是一個單線程事件循環,並且javascript沒有線程庫。如果你想使用更多的核心,你需要額外的循環,因此通過子進程來實現額外的進程。 –
我知道事件循環。我發現奇怪的是,當集羣功能被添加到節點時,它們嚴格與http服務器綁定。 –