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:[email protected]]
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: [email protected] [mailto:[email protected]] On
Behalf Of [email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.