我最近一直在學習F#,特別感興趣的是它容易利用數據並行性。這個成語似乎很容易理解和直接使用,並從中獲得實際價值。爲什麼我不應該使用F#異步工作流進行並行處理?
那麼爲什麼async
不是真的是爲了這個? Donald Syme himself表示PLINQ和期貨可能是更好的選擇。我在這裏閱讀的其他答案同意以及推薦TPL。 (只要您使用F#Powerpack獲得PSeq
函數,PLINQ與上述內置函數沒有太大區別。)
F#和函數式語言對此很有意義,和some applications與async
並行取得了巨大成功。
那麼爲什麼不應該我用async
來執行並行數據處理?我會通過編寫並行async
代碼而不是使用PLINQ或TPL來損失什麼?
首選項摘要然後是I/O - > Async,CPU - > TPL/PLINQ,語法的簡易性 - > Async/PLINQ。從我可以從包括上述文章在內的所有資源中收集的信息,使用Async.Parallel來處理CPU綁定的任務沒有太大的缺點。特別是TPL的排隊和工作分配功能是否使它成爲CPU限制操作的更好選擇? – Gnat 2011-03-17 15:54:34