Thanks Alex, I did what I would call a halfway house so to speak...
https://play.golang.org/p/fqPXXpNufO It ran for much longer before locking on the same line! Trouble is, now I can't actually see the lock whereas I could before! I'm wondering if I should keep a global channelMap and lock that with sync.RWMutex and whether that may help? Lee On Saturday, January 21, 2017 at 3:01:08 AM UTC, Alex Bucataru wrote: > > Actually, a buffered channel alone is not enough... > > A more robust solution is to move the shutdown branch in jobDispatcher > into a function; then call this function in a goroutine of its own right > after you create shutdown channel. That will prevent the message sending > and channel closing from deadlocking. You should also consider what you > want to do with the messages still in the channel buffer at shutdown > (probably drain the buffer and feed the messages back into a queue), and > the possibility that the channel was closed between its successful > retrieval from the map and the sending operation (recover from the panic > and re-queue the message). Most likely, you would extract the other select > branch from jobDispatcher into its own function. Something along the lines > of this (not tested): > > https://play.golang.org/p/93CBCcMh5g > > Note that you still have a data race on access to the map. And probably > need a way to gracefully shutdown the whole thing. > > Cheers, > Alex > > On Friday, 20 January 2017 17:10:48 UTC-5, l...@pinkfroot.com wrote: >> >> Yeah I did try with it enabled and it sees nothing. I use it all the >> time, it's great!! >> >> Thing is I can see the race condition in the code, just trying to work >> out how to avoid it! >> >> On Friday, January 20, 2017 at 10:09:05 PM UTC, Val wrote: >>> >>> Did you try with the race detector enabled? What was the output? >>> If not, you really should, and it's super easy to do. >>> Any complain from the race detector is a bug that must be fixed, not a >>> mere warning. >>> >>> Cheers >>> Val >>> >>> On Friday, January 20, 2017 at 8:10:42 PM UTC+1, l...@pinkfroot.com >>> wrote: >>> >>> >>>> It is kind of a race condition but one that I don't think will be >>>> detected by the detector! >>>> >>>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.