khenaidoo | ab1f7bd | 2019-11-14 14:00:27 -0500 | [diff] [blame] | 1 | package concurrent |
| 2 | |
| 3 | import "context" |
| 4 | |
| 5 | // Executor replace go keyword to start a new goroutine |
| 6 | // the goroutine should cancel itself if the context passed in has been cancelled |
| 7 | // the goroutine started by the executor, is owned by the executor |
| 8 | // we can cancel all executors owned by the executor just by stop the executor itself |
| 9 | // however Executor interface does not Stop method, the one starting and owning executor |
| 10 | // should use the concrete type of executor, instead of this interface. |
| 11 | type Executor interface { |
| 12 | // Go starts a new goroutine controlled by the context |
| 13 | Go(handler func(ctx context.Context)) |
| 14 | } |