executor.go raw

   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  }
  15