(Придерживаемся распространенного примера с асинхронной выборкой многих веб-страниц)
Как мне выполнить асинхронное выполнение нескольких (сотен) запросов веб-страниц, а затем ждать, пока все запросы будут завершить перед переходом к следующему шагу? Async.AsParallel обрабатывает несколько запросов одновременно, что зависит от количества ядер ЦП. Захват веб-страницы не является операцией, связанной с процессором. Не удовлетворенный ускорением Async.AsParallel, я ищу альтернативы.
Я попытался соединить точки между Async.StartAsTask и Task []. WaitAll. Инстинктивно я написал следующий код, но он не компилируется.
let processItemsConcurrently (items : int seq) =
let tasks = items |> Seq.map (fun item -> Async.StartAsTask(fetchAsync item))
Tasks.Task.WaitAll(tasks)
Как вы подойдете к этому?