Parallel processing zlib中的compress()/compress2()函数是否可以在不中断串行充气()的情况下并行化

Parallel processing zlib中的compress()/compress2()函数是否可以在不中断串行充气()的情况下并行化,parallel-processing,zlib,deflate,inflate,Parallel Processing,Zlib,Deflate,Inflate,我正在尝试从zlib(compress/compress2函数)并行压缩调用,在zlib中,要压缩的数据和输出缓冲区在调用时可用。为了寻求帮助,我遵循pigz()的代码,这是一个实用程序,处理文件,因此我必须编写类似的代码,但能够拦截对compress/compress2的调用。此外,我假设对compress/compress2函数的调用将具有合理的数据大小,因此并行化是有意义的。还假设应用程序使用inflateInit_/inflate/inflateEnd函数进行透明串行解压缩。同时考虑压缩

我正在尝试从zlib(compress/compress2函数)并行压缩调用,在zlib中,要压缩的数据和输出缓冲区在调用时可用。为了寻求帮助,我遵循pigz()的代码,这是一个实用程序,处理文件,因此我必须编写类似的代码,但能够拦截对compress/compress2的调用。此外,我假设对compress/compress2函数的调用将具有合理的数据大小,因此并行化是有意义的。还假设应用程序使用inflateInit_/inflate/inflateEnd函数进行透明串行解压缩。同时考虑压缩比的折衷

  • 我不完全理解pigz中的写线程如何处理来自多个压缩线程的输出,这些线程不在字节边界上
  • 如果存在一个具有一定空间开销的同步标记,那么它是否会违反为compress/compress2函数调用指定的输出缓冲区大小
  • 这个并行生成的放气流是否会被充气调用以串行方式透明地处理