diff --git a/src/chainparams.cpp b/src/chainparams.cpp index d7205fa5cbb..64723978bb8 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -112,6 +112,7 @@ public: nRPCPort = 8332; bnProofOfWorkLimit = ~uint256(0) >> 32; nSubsidyHalvingInterval = 210000; + nMinerThreads = 0; // Build the genesis block. Note that the output of the genesis coinbase cannot // be spent as it did not originally exist in the database. @@ -233,6 +234,7 @@ public: pchMessageStart[2] = 0xb5; pchMessageStart[3] = 0xda; nSubsidyHalvingInterval = 150; + nMinerThreads = 1; bnProofOfWorkLimit = ~uint256(0) >> 1; genesis.nTime = 1296688602; genesis.nBits = 0x207fffff; diff --git a/src/chainparams.h b/src/chainparams.h index d76b1a22806..f331d956fe7 100644 --- a/src/chainparams.h +++ b/src/chainparams.h @@ -57,6 +57,8 @@ public: int GetDefaultPort() const { return nDefaultPort; } const uint256& ProofOfWorkLimit() const { return bnProofOfWorkLimit; } int SubsidyHalvingInterval() const { return nSubsidyHalvingInterval; } + /* Used if GenerateBitcoins is called with a negative number of threads */ + int DefaultMinerThreads() const { return nMinerThreads; } virtual const CBlock& GenesisBlock() const = 0; virtual bool RequireRPCPassword() const { return true; } /* Make miner wait to have peers to avoid wasting work */ @@ -82,6 +84,7 @@ protected: uint256 bnProofOfWorkLimit; int nSubsidyHalvingInterval; string strDataDir; + int nMinerThreads; vector vSeeds; std::vector base58Prefixes[MAX_BASE58_TYPES]; }; diff --git a/src/miner.cpp b/src/miner.cpp index e980fdc42d3..44c2faaa4c1 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -652,8 +652,9 @@ void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads) static boost::thread_group* minerThreads = NULL; if (nThreads < 0) { - if (Params().NetworkID() == CChainParams::REGTEST) - nThreads = 1; + // In regtest threads defaults to 1 + if (Params().DefaultMinerThreads()) + nThreads = Params().DefaultMinerThreads(); else nThreads = boost::thread::hardware_concurrency(); }