Как правильно выполнять несколько асинхронных задач параллельно?

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

Вот сценарий — допустим, есть 1000 задач; каждый из них принимает в качестве входного параметра текстовую строку; преобразует этот текст (предварительная обработка ввода-вывода), а затем записывает преобразованный текст в файл. Цель состоит в том, чтобы логика предварительной обработки использовала 100% ЦП/ядер и часть операций ввода-вывода задач, выполняемых с максимальным уровнем параллелизма 10 (максимум 10 одновременно открытых для записи файлов за раз).

Можете ли вы предоставить пример кода, как это сделать с помощью C#/.NET 4.5?

http://blogs.msdn.com/b/csharpfaq/archive/2012/01/23/using-async-for-file-access-alan-berman.aspx

8
задан Grief Coder 29 May 2012 в 14:37
поделиться