Brotli压缩多线程

我的理解是 Brotli将块大小的信息存储在元块头中,只有块的最终未压缩大小,并且没有关于压缩长度的信息( 9.2).我猜想需要创建一个包装器才能将它用于多个线程,或者可能类似于Mark Adler的 pigz.

相同的线程原则是否适用于brotli,就像在这种情况下使用gzip一样,或者在多线程实现方面是否有任何可预见的问题需要注意?

解决方法

您可以将brotli格式用于此目的.我让他们添加了将元数据放入空元块的选项(其中“空”表示元块产生零未压缩数据).您可以将标记放在元数据中以帮助查找元块.插入的空元块也在字节边界处开始下一个元块.

每个元块可以独立于其他元块.如果以这种方式构造流,那么在压缩或单独解压缩它们时没有问题.可能依赖的区域是所使用的最后四个距离的环形缓冲区,以及经过当前元块开始的向后引用.对于并行使用,可以且必须构造元块以便不依赖于最后四个距离,而不是指向环形缓冲器,直到它已经填充了距当前元块的距离.此外,不允许在当前元块之前返回的距离(其中不包括静态引用).最后,您将附加一个空元数据或元数据元块,以将序列带到字节边界以便于连接.

顺便说一句,看起来你正在链接到草稿格式的旧版本.这是一个link to the current version.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...