2016-12-17 6 views
1

Как программировать I F #, в котором используется процессор с несколькими ядрами? Скажите вместо multithread или async? На языке python у них есть многопроцессорный модуль, но что эквивалентно для F #?Как сделать многоядерное программирование в F #

+1

Один из вариантов - [Async.Parallel] (https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/async.parallel%5B't%5D-method-%5Bfsharp%5D). У меня также был некоторый успех с использованием [Параллельные последовательности] (http://fsprojects.github.io/FSharp.Collections.ParallelSeq). –

+5

Вы используете несколько ядер из одного процесса при использовании async или обычной многопоточности .NET. Поэтому предпосылка этого вопроса кажется мне самой. – scrwtp

+0

Так же, как говорит Марк Симан. И [Nessos Streams] (http://nessos.github.io/Streams/) есть примеры PSeq. Существует также PLinq, а также есть Parallel в C#. Можете ли вы показать пример того, что вы хотели бы распараллелить? – s952163

ответ

0

Добавление пару указателей на то, что уже говорилось в комментариях:

1

Есть несколько подходов для распараллеливания в F#

  1. F# использует CLR и CTS поэтому можно использовать обычный .NET конструкции, как вы это делаете в C#. Например: Thread, BackgroundWorker, AutoResetEvent и т.д. Details
  2. F# имеет встроенную в конструкцию, называемую «асинхронные рабочие процессами» Details
  3. Там находятся некоторые рамки, которые позволяют вам выбрать подходящую модель параллелизма. Например Hopac
0

Если Вы intereseted в программировании GPU (который тесно связан с многоядерной, или даже manycore) в F #, посмотрите в Alea GPU, которая позволяет Вам легко использовать F # для таких технологий, как CUDA.

Для других опций программирования GPU в F #, посмотрите here.

Вы также можете попробовать использовать модель актера. Akka.NET имеет хороший API F #.

Существует также incoming book, что в целом можно считать ответом на вопрос (еще не прочитал его).