我知道該節點依賴於單個事件線程。所以沒有辦法讓它有並行線程。但是async.parallel確實提供了類似並行的功能。 Stack上的另一個問題意味着async.parallel正在使用process.nextTick。所以基本上async.parallel只是一個併發函數,而不是一個真正的並行函數?Node.js async.parallel,它是平行的嗎?
回答
async.parallel
只是讓您啓動多個異步操作,然後跟蹤它們何時完成。它們運行的並行程度完全取決於異步操作的內容。如果他們是網絡操作,那麼他們可能完全是並行的,因爲涉及的CPU非常少,並且處理獲取數據進出node.js進程的CPU將在node.js單線程之外處理。
您自己的處理請求結果的代碼並不真正並行運行。正如你所知道的,node.js是單線程的,所以你永遠不會有多於一個你自己的Javascript實際執行一次。但是很多操作(如網絡操作和磁盤操作)都由單個Javascript線程外的node.js處理,以便可以並行完成工作。
如果您是例如將一系列同步函數傳遞給async.parallel
(如Javascript數學計算),則不會同時進行任何操作。它會運行一個完成,然後下一個等,因爲一次只能運行一塊Javascript。
async.parallel
將用於Promise.all()
將在基於承諾的設計中使用的相同情況。它是跟蹤多個異步操作的完成(或第一個錯誤)。
node.js中的同步操作的真正並行性通常通過集羣(多個相同的node.js進程共享負載)或自定義子進程(啓動自定義子工作者來運行某些特定操作),然後操作系統可以將多個CPU應用於不同的進程並獲得一些實際的並行性。
我知道節點依賴於單個事件線程。所以沒有辦法讓它有並行線程。
在一個node.js進程中,只運行Javascript代碼(沒有本機代碼),這是正確的。當從本地代碼實現的JavaScript中調用函數時,線程或其他進程可以由node.js在內部使用。
Stack上的另一個問題意味着async.parallel正在使用process.nextTick。
這是一個異步管理代碼常見的(這是異步庫是什麼)使用process.nextTick()
強制回調總是被異步調用,如果它是使用同步和異步操作的組合,以使預測的行爲。出於同樣的原因,Promise規範要求總是在未來打勾時調用.then()
,從不同步,即使承諾立即解決。
所以基本上async.parallel是stil只是一個併發功能,而不是一個真正的並行功能?
async.parallel
的要點是跟蹤多個異步操作的完成。它本身不會使任何異步。您傳遞給async.parallel
的操作本身將是它本身(同步或異步)的任何操作。異步庫不會改變它。
- 1. 瞭解Node.JS async.parallel
- 2. 是否調用Node.js的async.parallel()同步?
- 3. async.parallel有關MongoDB和Node.js的
- 4. Node.JS async.parallel混淆|由async.map
- 5. 將參數傳遞給node.js中的async.parallel
- 6. NodeJS async.parallel在另一個async.parallel
- 7. 在Google雲端Shell中運行Node.js - 它是免費的嗎?
- 8. 它是時間形式node.js 0.8嗎?
- 9. 我可以在async.parallel中使用async.waterfall嗎?
- 10. F#Async.Parallel結果保證按順序嗎?
- 11. node.js同時運行,還是它?
- 12. 如何在node.js中的async.parallel中製作循環
- 13. Qyoto是一個可行的平臺嗎?
- 14. 是node.js的setTimeout()工作嗎?
- 15. 配料的NodeJS async.parallel
- 16. 使用async.parallel時出錯
- 17. 線程提示是連續運行的,不是平行的嗎?
- 18. 貓鼬在async.parallel
- 19. nodejs async.parallel遞歸
- 20. 問題與async.parallel
- 21. Mongoose和async.parallel
- 22. Node.JS async.parallel不會等到所有任務完成
- 23. 使用Async.Parallel Node.js同時搜索多個陣列
- 24. Async.times是否平行運行?
- 25. ArrayBlockingQueue - 它真的是並行嗎?
- 26. 與async.parallel工作陣列
- 27. node.js能檢測它何時關閉嗎?
- 28. Android GcmListenerService平行嗎?
- 29. 是Node.js Array.map()異步嗎?
- 30. Async.Parallel,許多作品