Interruptable goroutines
Clone or download
matryer Merge pull request #1 from cristovarghese/master
Fix for Task Stop function
Latest commit cf38584 Sep 28, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
README.md
doc.go
runner.go
runner_test.go

README.md

runner

Interruptable goroutines.

Usage

task := runner.Go(func(shouldStop runner.S) error {
  // do setup work
  defer func(){
    // do tear-down work
  }()
  for {

  	// do stuff

  	// periodically check to see if we should
  	// stop or not.
  	if shouldStop() {
  		break
  	}
  }
  return nil // no errors
})

At any time, from any place, you can stop the code from executing:

task.Stop()
select {
	case <-task.StopChan():
		// task successfully stopped
	case <-time.After(1 * time.Second):
		// task didn't stop in time
}

// execution continues once the code has stopped or has
// timed out.

if task.Err() != nil {
	log.Fatalln("task failed:", task.Err())
}
  • To see if the task is running, you can call task.Running()
  • To see if the task has errored, you can check task.Err()