Недавно я изучал F #, особенно интересуясь простотой использования данных parallelism. Идиома data |> Array.map |> Async.Parallel |> Async.RunSynchronously кажется очень простой для понимания и простой в использовании и получения реальной ценности.
Так почему же async на самом деле не предназначен для этого? Сам Дональд Симе говорит, что PLINQ и Futures, вероятно, лучший выбор. И другие ответы, которые я прочитал здесь, согласны с этим, а также рекомендуют TPL. (PLINQ не слишком сильно отличается от вышеупомянутых встроенных функций, если вы используете F # Powerpack для получения функций PSeq.)
F # и функциональные языки имеют для этого большой смысл, а некоторые приложения достигли больших успехов с помощью async parallelism.
Итак, почему я не должен использовать async для выполнения параллельных процессов данных? Что я проиграю, написав параллельный код async вместо использования PLINQ или TPL?