October 2015
Beginner to intermediate
400 pages
14h 44m
English
Sometimes we need to instruct a goroutine to stop what it is doing, for example, in a web server performing a computation on behalf of a client that has disconnected.
There is no way for one goroutine to terminate another directly, since
that would leave all its shared variables in undefined states.
In the rocket launch program (§8.7)
we sent a single value on a channel named abort, which the
countdown goroutine interpreted as a request to stop itself.
But what if we need to cancel two goroutines, or an arbitrary number?
One possibility might be to send as many events on the abort channel as there are goroutines to cancel. If some of the goroutines have already terminated themselves, however, our count will be too large, ...