Я должен не согласиться с некоторыми утверждениями здесь, ребята.
Прежде всего, я не вижу разницы между ThreadPool и задачами в координации или управлении. Особенно, когда задачи выполняются на ThreadPool, и у вас есть легкий контроль над задачами, исключения хорошо передаются вызывающему абоненту во время ожидания или ожидания по Tasks.WhenAll (задачи) и т. Д.
Во-вторых, I/O не должно быть единственным узким местом здесь, в зависимости от данных и уровня сжатия, ZIPпинг будет принимать msot, вероятно, больше времени, чем чтение файла с диска.
Это можно рассматривать по-разному, но я бы лучше пошел на что-то вроде количества ядер процессора или немного меньше.
Загрузка путей к файлам ConcurrentQueue, а затем запуск запущенных задач для удаления файлов, загрузки файлов, их замены и сохранения.
Оттуда вы можете настроить количество ядер и играть с балансировкой нагрузки.
Я не знаю, если ZIP поддерживает файл секционирования при сжатии, но в некоторых передовых/сложных случаях это может быть хорошей идеей, особенно на больших файлах ...
WOW, это 6 лет вопрос, облом! Я не заметил ... :)
ОЧЕНЬ НЕФФЕКТИВНО! ;) – ipavlu 2017-07-20 18:12:32