miner: make starting of CPU agent more reliable (#15148)

This commit is contained in:
Mark 2017-09-19 06:28:15 -05:00 committed by Felix Lange
parent a92d8a2654
commit cb5235eb07
1 changed files with 12 additions and 11 deletions

View File

@ -53,7 +53,19 @@ func (self *CpuAgent) Work() chan<- *Work { return self.workCh }
func (self *CpuAgent) SetReturnCh(ch chan<- *Result) { self.returnCh = ch }
func (self *CpuAgent) Stop() {
if !atomic.CompareAndSwapInt32(&self.isMining, 1, 0) {
return // agent already stopped
}
self.stop <- struct{}{}
done:
// Empty work channel
for {
select {
case <-self.workCh:
default:
break done
}
}
}
func (self *CpuAgent) Start() {
@ -85,17 +97,6 @@ out:
break out
}
}
done:
// Empty work channel
for {
select {
case <-self.workCh:
default:
break done
}
}
atomic.StoreInt32(&self.isMining, 0)
}
func (self *CpuAgent) mine(work *Work, stop <-chan struct{}) {