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