From ac0f8b81ae40f18a70413916e5ef1cbc503e4743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=83=20Elliot=20Shepherd?= Date: Fri, 26 Aug 2016 00:12:17 +1000 Subject: [PATCH] miner: Move CpuAgent channel creation from Start() to initialization (fixes #2948) Also remove the now un-needed mutex locking in Start() and Stop() --- miner/agent.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/miner/agent.go b/miner/agent.go index 4a4683bc6..16f2a7723 100644 --- a/miner/agent.go +++ b/miner/agent.go @@ -43,8 +43,10 @@ type CpuAgent struct { func NewCpuAgent(index int, pow pow.PoW) *CpuAgent { miner := &CpuAgent{ - pow: pow, - index: index, + pow: pow, + index: index, + quit: make(chan struct{}), + workCh: make(chan *Work, 1), } return miner @@ -55,25 +57,15 @@ func (self *CpuAgent) Pow() pow.PoW { return self.pow } func (self *CpuAgent) SetReturnCh(ch chan<- *Result) { self.returnCh = ch } func (self *CpuAgent) Stop() { - self.mu.Lock() - defer self.mu.Unlock() - close(self.quit) } func (self *CpuAgent) Start() { - self.mu.Lock() - defer self.mu.Unlock() if !atomic.CompareAndSwapInt32(&self.isMining, 0, 1) { return // agent already started } - self.quit = make(chan struct{}) - // creating current op ch makes sure we're not closing a nil ch - // later on - self.workCh = make(chan *Work, 1) - go self.update() }