CLEAN_RETURN(1); \
} } }
-#define NEXT_INT32(_vari32) { \
- const char* __nb; \
- NEXT_FIELD(__nb); \
- _vari32 = (int)readU32FromChar(&__nb); \
- if(*__nb != 0) { \
- errorOut("error: only numeric values with optional suffixes K, KB, KiB, M, MB, MiB are allowed"); \
- } \
-}
-
#define NEXT_UINT32(_varu32) { \
const char* __nb; \
NEXT_FIELD(__nb); \
removeSrcFile = 0,
cLevel = init_cLevel(),
ultra = 0,
- cLevelLast = MINCLEVEL - 1; /* for benchmark range */
+ cLevelLast = MINCLEVEL - 1, /* for benchmark range */
+ setThreads_non1 = 0;
unsigned nbWorkers = init_nbWorkers();
ZSTD_ParamSwitch_e mmapDict = ZSTD_ps_auto;
ZSTD_ParamSwitch_e useRowMatchFinder = ZSTD_ps_auto;
continue;
}
#endif
- if (longCommandWArg(&argument, "--threads")) { NEXT_UINT32(nbWorkers); continue; }
+ if (longCommandWArg(&argument, "--threads")) { NEXT_UINT32(nbWorkers); setThreads_non1 = (nbWorkers != 1); continue; }
if (longCommandWArg(&argument, "--memlimit")) { NEXT_UINT32(memLimit); continue; }
if (longCommandWArg(&argument, "--memory")) { NEXT_UINT32(memLimit); continue; }
if (longCommandWArg(&argument, "--memlimit-decompress")) { NEXT_UINT32(memLimit); continue; }
case 'T':
argument++;
nbWorkers = readU32FromChar(&argument);
+ setThreads_non1 = (nbWorkers != 1);
break;
/* Dictionary Selection level */
DISPLAYLEVEL(3, WELCOME_MESSAGE);
#ifdef ZSTD_MULTITHREAD
+ if ((operation==zom_decompress) && (setThreads_non1)) {
+ DISPLAYLEVEL(2, "Warning : decompression does not support multi-threading\n");
+ }
if ((nbWorkers==NBWORKERS_AUTOCPU) && (!singleThread)) {
/* automatically set # workers based on # of reported cpu cores */
if (defaultLogicalCores) {
zstd -T0 --auto-threads=logical -f file -q ; zstd -t file.zst
zstd -T0 --auto-threads=physical -f file -q ; zstd -t file.zst
zstd -T0 --jobsize=1M -f file -q ; zstd -t file.zst
+
+# multi-thread decompression warning test
+zstd -T0 -f file -q ; zstd -t file.zst; zstd -T0 -d file.zst -o file3
+zstd -T0 -f file -q ; zstd -t file.zst; zstd -T2 -d file.zst -o file4
+# setting multi-thread via environment variable does not trigger decompression warning
+zstd -T0 -f file -q ; zstd -t file.zst; ZSTD_NBTHREADS=0 zstd -df file.zst -o file3
+zstd -T0 -f file -q ; zstd -t file.zst; ZSTD_NBTHREADS=2 zstd -df file.zst -o file4
+# setting nbThreads==1 does not trigger decompression warning
+zstd -T0 -f file -q ; zstd -t file.zst; zstd -T1 -df file.zst -o file3
+zstd -T0 -f file -q ; zstd -t file.zst; zstd -T2 -T1 -df file.zst -o file4