Что делать, если вам нужно запускать несколько задач асинхронного ввода-вывода параллельно, но вам нужно убедиться, что одновременно выполняются не более X процессов ввода-вывода? а задачи обработки до и после ввода-вывода не должны иметь такого ограничения.
Вот сценарий - скажем, есть 1000 задач; каждый из них принимает текстовую строку в качестве входного параметра; преобразует этот текст (предварительная обработка ввода-вывода), а затем записывает преобразованный текст в файл. Цель состоит в том, чтобы сделать логику предварительной обработки использовать 100% процессоров/ядер и операций ввода-вывода для задач, выполняемых с максимальным значением 10 градусов parallelism (max 10 одновременно открыт для записи файлов за раз).
Можете ли вы предоставить пример кода, как это сделать с помощью С#/.NET 4.5?
http://blogs.msdn.com/b/csharpfaq/archive/2012/01/23/using-async-for-file-access-alan-berman.aspx