Задача многопоточного архивирования файлов. Элементы в очереди не по порядку - C#
Формулировка задачи:
Поставлена задача многопоточного архивирования файлов.
Есть 3 метода:
- Считать Из Файла Блок Данных и Добавить в Очередь На Сжатие,
- Взять блок из очереди, сжать его и добавить во вторую очередь на запись в файл
- Взять блок из второй очереди и записать его в файл
Решение задачи: «Задача многопоточного архивирования файлов. Элементы в очереди не по порядку»
textual
Листинг программы
static void ProcessFile(string inputPath, string outputPath) { var inputLines = new BlockingCollection<string>(); var processedLines = new BlockingCollection<string>(); // Stage #1 var readLines = Task.Factory.StartNew(() => { try { foreach (var line in File.ReadLines(inputPath)) { inputLines.Add(line); } } finally { inputLines.CompleteAdding(); } }); // Stage #2 var processLines = Task.Factory.StartNew(() => { try { inputLines.GetConsumingEnumerable().AsParallel().AsOrdered().ForAll(x=>processedLines.Add(x)); } finally { processedLines.CompleteAdding(); } }); // Stage #3 var writeLines = Task.Factory.StartNew(() => { File.WriteAllLines(outputPath, processedLines.GetConsumingEnumerable()); }); Task.WaitAll(readLines, processLines, writeLines); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д