在.net中是否有一个对流进行多线程压缩的库?我正在考虑类似于内置System.IO.GZipStream的东西,但是使用多线程来执行工作(从而利用所有的cpu核心)。
我知道,例如使用多线程的7-zip压缩,但他们发布的C# SDK似乎不能做到这一点。
发布于 2009-07-31 08:03:42
我认为你最好的办法是自己以相等的间隔分割数据流,如果使用非并行化算法,则启动线程以并行方式分别压缩每个部分。(之后,单个线程将它们连接成单个流(您可以创建一个流类,在当前流结束时继续从下一个流读取))。
您可能希望了解一下SharpZipLib,它比.NET中固有的压缩流要好一些。
编辑:当然,你需要一个头来告诉每个新的流从哪里开始。:)
发布于 2009-07-31 08:29:48
找到了这个库:http://www.codeplex.com/sevenzipsharp
看起来它包装了支持多线程的非托管7z.dll。显然,包装非托管代码并不理想,但看起来这是目前唯一的选择。
发布于 2012-11-07 23:28:30
我最近发现了一个支持多线程bzip压缩的压缩库:DotNetZip。这个库的优点是ParallelBZip2OutputStream类是从System.IO.Stream派生的,并接受System.IO.Stream作为输出。这意味着您可以创建一个从System.IO.Stream派生的类链,如下所示:
的DotNetZip library)
在这种情况下,我们创建一个.tar.bz文件,对其进行加密(可能使用AES),然后直接将其写入文件。
https://stackoverflow.com/questions/1211225
复制相似问题