mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-13 07:28:59 +01:00
Merge #17342: refactor: Clean up nScriptCheckThreads
5506ecfe7a[refactor] Replace global int nScriptCheckThreads with bool (John Newbery)d9957623b4[tests] Don't use TestingSetup in the checkqueue_tests (John Newbery) Pull request description: The meaning of this value is confusing. Refactor it and add comments. ACKs for top commit: sipa: ACK5506ecfe7apromag: ACK5506ecfe7a, only change was addressing my nits. laanwj: Code review ACK5506ecfe7aMarcoFalke: ACK5506ecfe7a🥐 Tree-SHA512: 78536727c98d2c23f3c0f3f169131474fef9a4486ae65029011caf06eab30f6f70ff73a65b2fb04a5d969fc1150858d1c6ea4767f04d48c1eea6b829316d0e63
This commit is contained in:
30
src/init.cpp
30
src/init.cpp
@@ -1047,15 +1047,6 @@ bool AppInitParameterInteraction()
|
||||
incrementalRelayFee = CFeeRate(n);
|
||||
}
|
||||
|
||||
// -par=0 means autodetect, but nScriptCheckThreads==0 means no concurrency
|
||||
nScriptCheckThreads = gArgs.GetArg("-par", DEFAULT_SCRIPTCHECK_THREADS);
|
||||
if (nScriptCheckThreads <= 0)
|
||||
nScriptCheckThreads += GetNumCores();
|
||||
if (nScriptCheckThreads <= 1)
|
||||
nScriptCheckThreads = 0;
|
||||
else if (nScriptCheckThreads > MAX_SCRIPTCHECK_THREADS)
|
||||
nScriptCheckThreads = MAX_SCRIPTCHECK_THREADS;
|
||||
|
||||
// block pruning; get the amount of disk space (in MiB) to allot for block & undo files
|
||||
int64_t nPruneArg = gArgs.GetArg("-prune", 0);
|
||||
if (nPruneArg < 0) {
|
||||
@@ -1242,10 +1233,25 @@ bool AppInitMain(NodeContext& node)
|
||||
InitSignatureCache();
|
||||
InitScriptExecutionCache();
|
||||
|
||||
LogPrintf("Script verification uses %d additional threads\n", std::max(nScriptCheckThreads - 1, 0));
|
||||
if (nScriptCheckThreads) {
|
||||
for (int i=0; i<nScriptCheckThreads-1; i++)
|
||||
int script_threads = gArgs.GetArg("-par", DEFAULT_SCRIPTCHECK_THREADS);
|
||||
if (script_threads <= 0) {
|
||||
// -par=0 means autodetect (number of cores - 1 script threads)
|
||||
// -par=-n means "leave n cores free" (number of cores - n - 1 script threads)
|
||||
script_threads += GetNumCores();
|
||||
}
|
||||
|
||||
// Subtract 1 because the main thread counts towards the par threads
|
||||
script_threads = std::max(script_threads - 1, 0);
|
||||
|
||||
// Number of script-checking threads <= MAX_SCRIPTCHECK_THREADS
|
||||
script_threads = std::min(script_threads, MAX_SCRIPTCHECK_THREADS);
|
||||
|
||||
LogPrintf("Script verification uses %d additional threads\n", script_threads);
|
||||
if (script_threads >= 1) {
|
||||
g_parallel_script_checks = true;
|
||||
for (int i = 0; i < script_threads; ++i) {
|
||||
threadGroup.create_thread([i]() { return ThreadScriptCheck(i); });
|
||||
}
|
||||
}
|
||||
|
||||
// Start the lightweight task scheduler thread
|
||||
|
||||
Reference in New Issue
Block a user