diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-05-12 03:11:27 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-05-12 03:11:27 +0800 |
commit | 0bedf1c3760a1042171fdfde0f119acb683c43ec (patch) | |
tree | 2251978416ad615ee8ca5e465a5bf9ed5b74efed /miner/miner.go | |
parent | 59bc5412327469fd13534ee22eaeda91d79286f4 (diff) | |
parent | 48bd48876c02d1a08690b9604df09ef4bcf77838 (diff) | |
download | dexon-0bedf1c3760a1042171fdfde0f119acb683c43ec.tar dexon-0bedf1c3760a1042171fdfde0f119acb683c43ec.tar.gz dexon-0bedf1c3760a1042171fdfde0f119acb683c43ec.tar.bz2 dexon-0bedf1c3760a1042171fdfde0f119acb683c43ec.tar.lz dexon-0bedf1c3760a1042171fdfde0f119acb683c43ec.tar.xz dexon-0bedf1c3760a1042171fdfde0f119acb683c43ec.tar.zst dexon-0bedf1c3760a1042171fdfde0f119acb683c43ec.zip |
Merge pull request #918 from obscuren/cpu_miner_fixes
cmd/geth, miner, backend, xeth: Fixed miner threads to be settable
Diffstat (limited to 'miner/miner.go')
-rw-r--r-- | miner/miner.go | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/miner/miner.go b/miner/miner.go index efe6d3051..09342e250 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -23,16 +23,8 @@ type Miner struct { pow pow.PoW } -func New(eth core.Backend, pow pow.PoW, minerThreads int) *Miner { - // note: minerThreads is currently ignored because - // ethash is not thread safe. - miner := &Miner{eth: eth, pow: pow, worker: newWorker(common.Address{}, eth)} - for i := 0; i < minerThreads; i++ { - miner.worker.register(NewCpuMiner(i, pow)) - } - miner.threads = minerThreads - - return miner +func New(eth core.Backend, pow pow.PoW) *Miner { + return &Miner{eth: eth, pow: pow, worker: newWorker(common.Address{}, eth)} } func (self *Miner) Mining() bool { @@ -48,15 +40,27 @@ func (m *Miner) SetGasPrice(price *big.Int) { m.worker.gasPrice = price } -func (self *Miner) Start(coinbase common.Address) { - glog.V(logger.Info).Infoln("Starting mining operation") +func (self *Miner) Start(coinbase common.Address, threads int) { self.mining = true + + for i := 0; i < threads; i++ { + self.worker.register(NewCpuAgent(i, self.pow)) + } + self.threads = threads + + glog.V(logger.Info).Infof("Starting mining operation (CPU=%d TOT=%d)\n", threads, len(self.worker.agents)) + self.worker.coinbase = coinbase self.worker.start() self.worker.commitNewWork() } +func (self *Miner) Stop() { + self.worker.stop() + self.mining = false +} + func (self *Miner) Register(agent Agent) { if self.mining { agent.Start() @@ -65,11 +69,6 @@ func (self *Miner) Register(agent Agent) { self.worker.register(agent) } -func (self *Miner) Stop() { - self.mining = false - self.worker.stop() -} - func (self *Miner) HashRate() int64 { return self.worker.HashRate() } |