首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中的多线程压缩

C#中的多线程压缩
EN

Stack Overflow用户
提问于 2009-07-31 07:59:58
回答 5查看 10.3K关注 0票数 7

在.net中是否有一个对流进行多线程压缩的库?我正在考虑类似于内置System.IO.GZipStream的东西,但是使用多线程来执行工作(从而利用所有的cpu核心)。

我知道,例如使用多线程的7-zip压缩,但他们发布的C# SDK似乎不能做到这一点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-31 08:03:42

我认为你最好的办法是自己以相等的间隔分割数据流,如果使用非并行化算法,则启动线程以并行方式分别压缩每个部分。(之后,单个线程将它们连接成单个流(您可以创建一个流类,在当前流结束时继续从下一个流读取))。

您可能希望了解一下SharpZipLib,它比.NET中固有的压缩流要好一些。

编辑:当然,你需要一个头来告诉每个新的流从哪里开始。:)

票数 7
EN

Stack Overflow用户

发布于 2009-07-31 08:29:48

找到了这个库:http://www.codeplex.com/sevenzipsharp

看起来它包装了支持多线程的非托管7z.dll。显然,包装非托管代码并不理想,但看起来这是目前唯一的选择。

票数 4
EN

Stack Overflow用户

发布于 2012-11-07 23:28:30

我最近发现了一个支持多线程bzip压缩的压缩库:DotNetZip。这个库的优点是ParallelBZip2OutputStream类是从System.IO.Stream派生的,并接受System.IO.Stream作为输出。这意味着您可以创建一个从System.IO.Stream派生的类链,如下所示:

  • ICSharpCode.SharpZipLib.Tar.TarOutputStream
  • Ionic.BZip2.ParallelBZip2OutputStream (来自encryption)
  • System.IO.FileStream

的DotNetZip library)

  • System.Security.Cryptography.CryptoStream

在这种情况下,我们创建一个.tar.bz文件,对其进行加密(可能使用AES),然后直接将其写入文件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1211225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档