https://github.com/matryer/runner
Interruptable goroutines
https://github.com/matryer/runner
Last synced: 9 months ago
JSON representation
Interruptable goroutines
- Host: GitHub
- URL: https://github.com/matryer/runner
- Owner: matryer
- License: mit
- Created: 2015-02-07T23:40:07.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2021-12-13T16:09:44.000Z (about 4 years ago)
- Last Synced: 2025-03-24T15:11:15.912Z (10 months ago)
- Language: Go
- Homepage:
- Size: 9.77 KB
- Stars: 100
- Watchers: 7
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# runner
Interruptable goroutines.
* [API documentation](http://godoc.org/github.com/matryer/runner)
## 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()`