Какие API использовать для реализации CSP/GoRoutines в .NET/F#

Я возвращаюсь к .NET после отпуска на некоторое время в 2,0 дня. Теперь я вижу множество API/библиотек для управления параллелизмом в .NET.

Мне нравится, как чувствуют себя GoRoutines, и я хочу иметь что-то похожее в .NET/F#, но я не уверен, что будет лучшей основой для этого.

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

PD: У меня есть полный контроль над кодовой базой и последними версиями .NET для F#/.NET как в Windows, так и в моно.


person mamcx    schedule 18.02.2016    source источник
comment
Важно знать, что, хотя вы можете смешивать традиционные библиотеки .net, написанные на C#, f# работает по-своему. C# имеет языковую конструкцию async/await, которая похожа по своей природе, но во многом отличается от Асинхронный рабочий процесс. Как бы вы ни нарезали его, они, скорее всего, будут немного отличаться от Go. В обоих случаях эти методы будут работать как для сценариев с привязкой к IO, так и с привязкой к ЦП.   -  person Phillip Scott Givens    schedule 19.02.2016
comment
C#: хотя async/await может работать в особых сценариях с привязкой к ЦП, их обычное использование — ввод-вывод. С другой стороны, задачи используются для рабочих процессов с привязкой к процессору. Асинхронные рабочие процессы в F# можно использовать как для операций ввода-вывода, так и для приложений, интенсивно использующих ЦП.   -  person CaringDev    schedule 19.02.2016
comment
Хорошо, в F # я думал, что агенты - это путь (stackoverflow.com/questions/35469691/). Я знаю основы асинхронного программирования, но не понимаю, как здесь можно использовать асинхронные рабочие процессы...   -  person mamcx    schedule 19.02.2016
comment
Подумав некоторое время, я задаюсь вопросом, намного ли это проще. Канал является ключевым моментом (то, как происходит общение), поэтому мне интересно, если просто реализовать тип канала с concurrentQueue, и все. Использование асинхронности, агентов или задач не имеет большого значения.   -  person mamcx    schedule 19.02.2016
comment
github.com/Hopac/Hopac/tree/master/Docs   -  person Mauricio Scheffer    schedule 21.02.2016