Hi again.
Did you perhaps intend to make the call to monitorWorker() as a goroutine? That would let it run in parallel with the rest of main. John John Souvestre - New Orleans LA From: John Souvestre [mailto:j...@souvestre.com] Sent: 2017 January 08, Sun 06:10 To: 'golang-nuts' Subject: RE: [go-nuts] Multiple goroutine timeout for waitgroup not working Hi Abhi. I believe that the wait group timeout (in monitorWorker) was set to 2 seconds in the code you posted. I put a debugging print in the timeout case, and it is taking place. What were you expecting to see? John John Souvestre - New Orleans LA From: golang-nuts@googlegroups.com [mailto:golang-nuts@googlegroups.com] On Behalf Of desaiabhi...@gmail.com Sent: 2017 January 08, Sun 05:48 To: golang-nuts Subject: Re: [go-nuts] Multiple goroutine timeout for waitgroup not working hi John Thanks for the reply sorry I mean Work2 takes => 3 seconds work1 takes => 1 seconds Wait group timeout is => 1 seconds It is expected that only Work1 should get done and Work 2 should get timeout which is not happening Waitgroup waits for both work.. program doing something wrong func Work2(message chan *TestStruct, wg *sync.WaitGroup, tokenNumber string) { defer wg.Done() v1 := new(TestStruct) v1.Name = tokenNumber time.Sleep(3 * time.Second) message <- v1 fmt.Printf("finished %s\n", tokenNumber) } Thanks, Abhi On Sunday, January 8, 2017 at 5:09:56 PM UTC+5:30, John Souvestre wrote: What do you see when you run it? I see: finished 1 finished 2 len > %!s(int=2) ç Using a string format for an int Name > 1 Name > 2 Ø Work 2 - have 3 second I’m not sure exactly what you are trying to do, but I suspect that changing “messges” to hold 2 items might make it work. messges := make(chan *TestStruct, 2) I’m guessing, but I suspect that you didn’t realize that if Work1 runs first, then Work2 will block since the channel is full (or until you close it). John John Souvestre - New Orleans LA -- 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.