Поддержка F # для нескольких ядер - PullRequest
2 голосов
/ 20 августа 2010

Я новичок в F #, но у меня есть несколько лет опыта работы в Classic VB, C # и LINQ

Мне нравится F # и понимаю, что по умолчанию он будет поддерживать несколько ядер. Использовать на серверах несколько доступных ядер (4/5/6) - это довольно большое преимущество.

Как F # делает это?
Я также понимаю, что LINQ обеспечивает параллельную обработку - она ​​работает так же, как F #? Почему в C # нет полной параллельной обработки ядра?

Спасибо

Ответы [ 3 ]

4 голосов
/ 20 августа 2010

В F # нет волшебной поддержки для автоматического распараллеливания вашего кода. Просто различные функции F # делают написание параллельного кода проще, чем на более императивном или OO-языке.

Тем не менее, посмотрите на модуль Async для примера того, как легко написать параллельный код на F #.

2 голосов
/ 20 августа 2010

Думаю, вам понравится смотреть видео Люка с PDC:

http://blogs.msdn.com/b/lukeh/archive/2010/02/01/f-for-parallel-and-asynchronous-programming-pdc-2009.aspx

В нем рассказывается о том, почему параллельное / параллельное программирование сложно и какие функции F # облегчают его.

2 голосов
/ 20 августа 2010

Я знаю, что F # имеет async, который вы можете использовать так:

getIds()
|> List.map (
    fun id -> async {
        do! somethingAsync1 id
        do! somethingAsync2 id
    }
)
|> Async.Parallel
|> Async.RunSynchronously 

Это не значит, что вы не можете сделать это в C # с небольшим количеством работы. Конечно, F # имеет приятный синтаксис в отношении параллельного программирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...