Здравствуйте, SkyDance, Вы писали:
N>>Допустим у тебя есть функция prime/1(возвращает Ns простое число). Работает слишком долго и блокируют. В случае C# берем код как есть, ставим async, переименовываем в GetPrimeAsync. Если есть желание, но в современном мире multicore уже не обязательно, разбрасываем "await Task.Yield()".
SD>Просто "поставить async" не выйдет — нужно где-то "await". Иными словами, всю программу переписать.
Конечно ожидается что точка вызова уже async. Собственно есть встроенная обертка Task.Run и переписывать не надо вообще. Но тут я не в курсе, что то подобное возможно есть и в Erlang.
N>>В Эрланге надo полностью разбить на процессы.
SD>Для такой простой мелочи разбивать ничего не надо, есть готовая функция в OTP.
Блин, ну это же пример.
SD>Но можно написать и вручную, причем это будет выглядеть очень просто, красиво и элегантно. Оригинальная функция ровно так же не будет меняться. Только в месте вызова вместо "call_fun" будет "spawn(fun call_fun)". Все, писанины куда меньше, чем в C#.
"красиво и элегантно" это религия, а к "писанины куда меньше" в соседний топик. Там пока у C# короче.