1
0
mirror of https://github.com/facebook/zstd.git synced 2025-07-29 11:21:22 +03:00

warn when requesting decompression with multiple threads

restore #2918 fix
This commit is contained in:
Yann Collet
2025-03-10 22:46:33 -07:00
parent f9a6031963
commit c583c2c39e
3 changed files with 31 additions and 11 deletions

View File

@ -822,15 +822,6 @@ static unsigned init_nbWorkers(void) {
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); \
@ -887,7 +878,8 @@ int main(int argCount, const char* argv[])
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;
@ -1090,7 +1082,7 @@ int main(int argCount, const char* argv[])
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; }
@ -1297,6 +1289,7 @@ int main(int argCount, const char* argv[])
case 'T':
argument++;
nbWorkers = readU32FromChar(&argument);
setThreads_non1 = (nbWorkers != 1);
break;
/* Dictionary Selection level */
@ -1341,6 +1334,9 @@ int main(int argCount, const char* argv[])
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) {