Метод Async.Parallel<'T> (F#)
Создает асинхронное вычисление, которое выполняет все заданные асинхронные вычисления, первоначально ставя каждое из них в очередь в качестве рабочего элемента и используя шаблон разветвлений и соединений.
Пространство имен/путь к модулю: Microsoft.FSharp.Control
Сборка: FSharp.Core (в FSharp.Core.dll)
// Signature:
static member Parallel : seq<Async<'T>> -> Async<'T []>
// Usage:
Async.Parallel (computations)
Параметры
computations
Тип: seq<Async<'T>>Последовательность неодинаковых вычислений, подлежащих параллелизации.
Возвращаемое значение
Вычисление, которое возвращает массив значений из последовательности входных вычислений.
Заметки
Если все дочерние вычисления выполнены успешно, массив результатов передается далее. Если какое-либо дочернее вычисление вызывает исключение, общее вычисление вызывает исключение и отменяет другие. Общее вычисление прореагирует на отмену, выполняя дочерние вычисления. Если вычисление отменено, оно отменяет оставшиеся дочерние вычисления, но ожидает выполнения других дочерних вычислений.
Пример
В следующем примере кода показано, как использовать Async.Parallel для запуска вычисления, которые записывают в несколько файлов, асинхронно.
let bufferData (number:int) =
[| for count in 1 .. 1000 -> byte (count % 256) |]
|> Array.permute (fun index -> index)
let writeFiles bufferData =
Seq.init 1000 (fun num -> bufferData num)
|> Seq.mapi (fun num value ->
async {
let fileName = "file" + num.ToString() + ".dat"
use outputFile = System.IO.File.Create(fileName)
do! outputFile.AsyncWrite(value)
})
|> Async.Parallel
|> Async.Ignore
writeFiles bufferData
|> Async.Start
Платформы
Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)
Сведения о версии
Среда выполнения F#
Поддерживается в версиях 2.0, 4.0
Silverlight
Поддерживается в версии 3
См. также
Ссылки
Пространство имен Microsoft.FSharp.Control (F#)
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Август 2010 |
Добавлен пример кода. |
Улучшение информации. |