To determine the default for -par
, the number of script verification threads, use boost::thread::physical_concurrency() which counts only physical cores, not virtual cores.
Virtual cores are roughly a set of cached registers to avoid context switches while threading, they cannot actually perform work, so spawning a verification thread for them could even reduce efficiency and will put undue load on the system.
Should fix issue #6358, as well as some other reported system overload issues, especially on Intel processors.
The function was only introduced in boost 1.56, so provide a utility function GetNumCores
to fall back for older Boost versions.