microsoft / RecursiveExtractor

RecursiveExtractor is a .NET Standard 2.0 archive extraction Library, and Command Line Tool which can process 7zip, ar, bzip2, deb, gzip, iso, rar, tar, vhd, vhdx, vmdk, wim, xzip, and zip archives and any nested combination of the supported formats.
MIT License
194 stars 29 forks source link

Refactor parallel behavior to perform only at top level #113

Closed gfs closed 1 year ago

gfs commented 1 year ago

The parallel option currently enables parallel extraction when possible inside of extractors. However, many implementations are not thread-safe as so this support is limited.

Instead we could parallelize the recursive part of the extraction at the top level - this should sidestep any non-threadsafe implementations in the underlying extractor libraries.

For example, add the parallelization here: https://github.com/microsoft/RecursiveExtractor/blob/84b45b6be7c908e9da9658da2b6d6adeacd66ccc/RecursiveExtractor/Extractor.cs#LL647C23-L647C23

Also part of this refactoring:

Remove individual extractor level parallel implementations. Remove any async parallel implementations.

Alternately:

Deprecate parallel option entirely - remove all functionality and update doc ocomments appropriately.