parallel-processing - zlib 中的函数 compress() / compress2() 是否可以在不破坏串行 inflate() 的情况下并行化
问题描述
我正在尝试并行化来自 zlib(compress / compress2 函数)的压缩调用,其中要压缩的数据和输出缓冲区在调用时可用。为了获得帮助,我正在关注 pigz ( https://zlib.net/pigz/ ) 的代码,它是一个实用程序并处理文件,因此我必须编写类似但能够拦截对 compress/compress2 的调用。此外,我假设对 compress/compress2 函数的调用将具有合理的数据大小,因此并行化是有意义的。还假设应用程序使用 inflateInit_ / inflate / inflateEnd 函数进行透明串行解压缩。还要考虑压缩比的折衷。
- 我不完全理解 pigz 中的写线程如何处理来自多个压缩线程的输出,这些线程不在字节边界上?
- 如果存在具有一定空间开销的同步标记,是否会违反为 compress/compress2 函数调用提供的输出缓冲区大小?
- 这个并行生成的 deflate 流是否会被 inflate 调用以串行方式透明地处理。
解决方案
推荐阅读
- javascript - 从父组件(道具)和组件本身设置样式反应原生
- android - 如何将 ListView 标题放入 Android 气泡中
- python - APScheduler 未按预期执行
- python - 如何为散景中的“X”轴分配多种颜色?
- angularjs - AngularJS ui-router 在子状态之前等待父状态解析
- ios - 如何在 iOS 的调试构建配置中禁用反应原生开发模式?
- python - “线程Thread-3中的异常”Python异常杀死ROS节点
- python - 寻求帮助为 Raspberry pi 编写 python 代码以制作交互式老式手机
- nginx - 如何使用 nginx 设置安全的 websocket
- javascript - 需要将多个复选框中的值拉入数组并将其存储为变量