The optimal number of threads for any pool varies. I have found that on my 32 dual core (64) machines, 32 is more optimal than 64 for the validation threadpool. At some point the cost of fanning out the parallel jobs exceeds the benefit of parallelism. For this reason the node limits the number of threads configured to the number that are reported by the operating system, but that’s fairly arbitrary and more of a safeguard against gross misconfiguration.
You mean for safety, LibBitcoin’s thread pool will be the number of CPU cores that the OS reports that the machine has?
Safety as in don’t presume users will bother to set such a setting