F# лучше, чем C# в сценариях, где Вы должны завершить параллелизм в частях приложения?

Внутри while playing вы должны очистить экран - т.е. screen.fill( (0,0,0) ) прежде чем рисовать все элементы. Таким образом, вы получите анимацию выбранного элемента в меню.

Вместо fill() вы также можете blit() добавить некоторое изображение / фон, который удалит все элементы.

7
задан Tom Kidd 26 February 2009 в 23:13
поделиться

6 ответов

Я посмотрел бы на Параллельные Расширения, это разрабатывается Microsoft.

6
ответ дан 6 December 2019 в 10:54
поделиться

Если просто необходимо обработать наборы данных параллельно, ParallelFX очень удобны. Они вынут много боли из выполнения его вручную в C#.

Но если код имеет много асинхронного кода, асинхронная монада F# делает его значительно легче, чем можно сделать в C#. Если Вы посмотрите на большое количество BeginXXX/EndXXX или страшного кода XXXAsync/XXXCompletedEvent, то F# будет главной победой.

Иначе у Вас просто будут общие усиления F# по C#.

5
ответ дан 6 December 2019 в 10:54
поделиться

существует два способа сделать вещи параллелью, они оба работают очень хорошо в F#.

  • Как Josh уже упомянул, существует библиотека Parallel Extensions. Это делает чрезвычайно легким параллелизировать обработку некоторых структур данных - особенно неизменные структуры данных, которые Вы будете часто использовать в F#. Так, объединение Расширений Парааллели с F# является правильным способом пойти. Это будет обсуждено в моей предстоящей реальной книге F#, но я делаю исходный код доступным. Это охвачено в главе 14, и источник для нее должен скоро быть доступным.

  • Для некоторых проблем можно использовать параллелизм передачи сообщений, который является привлекательной альтернативой общей памяти. Можно найти некоторую информацию об этом в бесплатной главе из книги Don Syme. Это будет охвачено в моей книге также (Глава 13 и 16).

  • Путем объединения параллелизма передачи сообщений с асинхронными рабочими процессами можно получить отличный способ для записи программ, которые не могут быть легко параллелизированы с помощью Параллельных расширений (т.е. они должны поделиться некоторой информацией и также использовать асинхронные операции неблокирования (такие как загрузка с Интернета)),

2
ответ дан 6 December 2019 в 10:54
поделиться

Согласно этой демонстрации Luca Bolognese, простота реализации параллелизма является одной из более сильных точек F#. Приблизительно в 53-минутной метке на это становится довольно впечатляющим. Надежда это помогает немного. http://channel9.msdn.com/pdc2008/TL11/

2
ответ дан 6 December 2019 в 10:54
поделиться

F# главным образом свободен от побочных эффектов так да, но Вы не хотели бы реализовывать UI в нем. На обороте будет большая параллельная функциональность, встроенная к следующей версии C# через LINQ.

Необходимо будет также взвесить учебные требования и то, что F# еще не является RTM и не будет до конца этого года.

1
ответ дан 6 December 2019 в 10:54
поделиться

F# делает определенные подходы лучше (например, собственная поддержка сообщения), но можно сделать это в C#, если Вы минимизируете (или лучше, устраните), изменяемое состояние.

Как отмечено в других ответах, библиотеки.NET собираются получить большое повышение таким образом скоро с параллельными расширениями. Они будут иметь, однако, точно то же отсутствие масштабируемости, если Вы начнете использовать блокировки.

0
ответ дан 6 December 2019 в 10:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: