Здравствуйте, SkyDance, Вы писали:
N>>Какое нафиг отношение pattern matching имеет к асинхронности?
SD>Прямое:
SD>SD>get_result() ->
SD> spawn(parall1),
SD> spawn(parall2),
SD> spawn(parall3),
SD> receive
SD> {parall1, Result} -> Result;
SD> {parall2, Result2} -> Result2;
SD> {parall3, Result3} -> Result3;
SD> end.
SD>
SD>Запускаешь 3 функции в параллель, которая первой ответила — тот результат и возвращаем.
public static async Task<T> GetResultAsync()
{
var task1 = parall1();
var task2 = parall2();
var task3 = parall3();
return Task.WhenAny(task1, task2, task3) switch
{
task1 => await task1;
task2 => await task2;
task2 => await task3;
};
};
PM в C# тут конечно не нужен:
return await Task.WhenAny(task1, task2, task3);
, но я написал для тебя по эрланговски, длинно.