kevinniechen / go-concurrency-patterns

Go concurrency patterns from Rob Pike's 2012 Google I/O talk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

What happens to the anonymous goroutine running in the background?

BSardorbek opened this issue · comments

https://github.com/kevchn/go-concurrency-patterns/blob/9493f7e9f5db056eae29c2faa231ea54c5514545/1-8-timeout-select.go#L29


func generator(msg string) <-chan string { // returns receive-only channel
	ch := make(chan string)
	go func() { // anonymous goroutine
		for i := 0; ; i++ {
			ch <- fmt.Sprintf("%s %d", msg, i)
			time.Sleep(time.Second)
		}
	}()
	return ch
}

The goroutine, still running in the background, continues its infinite loop.
However, since the main code is no longer receiving from the channel, the goroutine's actions are effectively ignored.
The Go runtime will eventually clean up the goroutine when the program exits.