Add methods to add and remove worker threads

This commit is contained in:
Taylor Gerring 2015-03-05 07:52:51 -06:00
parent c47866d251
commit 4082109f26
2 changed files with 26 additions and 0 deletions

View file

@ -58,3 +58,18 @@ func (self *Miner) Stop() {
func (self *Miner) HashRate() int64 { func (self *Miner) HashRate() int64 {
return self.worker.HashRate() return self.worker.HashRate()
} }
func (self *Miner) AddThreads(minerThreads int) int {
if minerThreads > 0 {
for i := 0; i < minerThreads; i++ {
self.worker.register(NewCpuMiner(i, self.pow))
}
}
return len(self.worker.agents)
}
func (self *Miner) RemoveThreads(num int) int {
self.worker.unregister(num)
return len(self.worker.agents)
}

View file

@ -115,6 +115,17 @@ func (self *worker) register(agent Agent) {
agent.SetWorkCh(self.recv) agent.SetWorkCh(self.recv)
} }
func (self *worker) unregister(numremove int) {
totagents := len(self.agents)
if totagents == 0 || numremove < 1 {
return
}
if numremove > totagents {
numremove = totagents
}
self.agents = self.agents[0 : totagents-numremove]
}
func (self *worker) update() { func (self *worker) update() {
events := self.mux.Subscribe(core.ChainEvent{}, core.NewMinedBlockEvent{}) events := self.mux.Subscribe(core.ChainEvent{}, core.NewMinedBlockEvent{})