Я пытаюсь распараллелить вызовы сжатия из zlib (функции compress / compress2), где данные, подлежащие сжатию и выходной буфер, доступны во время вызова. Для справки я следую коду pigz (https://zlib.net/pigz/), который является утилитой и работает с файлами, поэтому мне пришлось бы написать что-то подобное, но я мог бы перехватывать вызовы compress / compress2. Кроме того, я предполагаю, что вызовы функций compress / compress2 будут иметь разумные размеры данных, поэтому распараллеливание имеет смысл. также предполагается прозрачная последовательная декомпрессия приложением с использованием функций inflateInit_ / inflate / inflateEnd. также учитывая компромисс в отношении степени сжатия.
- Я не совсем понимаю, как поток записи в pigz обрабатывает выходные данные из нескольких потоков сжатия, которые не находятся на границе байтов?
- , если есть маркер syn c с определенными затратами пространства, может ли это когда-либо нарушать размер выходного буфера, заданного для вызова функции compress / compress2?
- будет ли этот дефлированный поток, генерируемый параллельно, прозрачно обрабатываться последовательно с помощью вызова inflate.