zstd/lib/compress
Yann Collet 1a2547f654 ZSTDMT_compressStream() becomes blocking when required to ensure forward progresses
In some (rare) cases, job list could be blocked by a first job still being processed,
while all following ones are completed, waiting to be flushed.
In such case, the current job-table implementation is unable to accept new job.
As a consequence, a call to ZSTDMT_compressStream() can be useless (nothing read, nothing flushed),
with the risk to trigger a busy-wait on the caller side
(needlessly loop over ZSTDMT_compressStream() ).

In such a case, ZSTDMT_compressStream() will block until the first job is completed and ready to flush.
It ensures some forward progress by guaranteeing it will flush at least a part of the completed job.
Energy-wasting busy-wait is avoided.
2017-01-22 23:49:52 -08:00
..
fse_compress.c replaced usage of FSE_buildCTable by FSE_buildCTable_wksp, using less stack space in the process 2016-12-01 16:24:04 -08:00
huf_compress.c introduced HUF_buildCTable_wksp(), to reduce stack memory usage 2016-12-01 17:47:30 -08:00
zstd_compress.c ZSTDMT_initCStream_usingDict() can outlive dict 2017-01-22 16:44:15 -08:00
zstd_opt.h renamed savedRep into repToConfirm 2017-01-19 17:33:37 -08:00
zstdmt_compress.c ZSTDMT_compressStream() becomes blocking when required to ensure forward progresses 2017-01-22 23:49:52 -08:00
zstdmt_compress.h ZSTDMT_initCStream_usingDict() can outlive dict 2017-01-22 16:44:15 -08:00