Compare commits

..

No commits in common. "main" and "v0.1.0" have entirely different histories.
main ... v0.1.0

View File

@ -7,39 +7,28 @@ cycle-scheduler is a simple scheduler lib, handling tasks and executes them at r
## Examples ## Examples
* Init a new scheduler with 4 workers * Init a new scheduler with 4 workers
```go ```go
package main
import ( import (
"context" "context"
"time"
scheduler "gitea.thegux.fr/rmanach/cycle-scheduler.git" scheduler "gitea.thegux.fr/rmanach/cycle-scheduler.git"
) )
func main() { ctx := context.Background()
ctx, fnCancel := context.WithCancel(context.Background())
s := scheduler.NewSchedulerCycle(ctx, 4) s := scheduler.NewSchedulerCycle(ctx, 4)
// add a task with an execution interval of 2 ms (executed every 2 ms) // add a task with an execution interval of 2 ms (executed every 2 ms)
// and a maximum duration of 30 second. // and a maximum duration of 30 second.
s.Delay( taskID := s.Delay(
func(ctx context.Context) (any, error) { func(ctx context.Context) (any, error) {
// ... // ...
return nil, nil return any, nil
}, },
scheduler.WithExecInterval(2*time.Millisecond), scheduler.WithExecInterval(2*time.Millisecond),
scheduler.WithMaxDuration(30*time.Second), scheduler.WithMaxDuration(30*time.Second)
) )
// stop the program after 5 seconds
go func() {
time.Sleep(5 * time.Second)
fnCancel()
}()
<-ctx.Done() <-ctx.Done()
<-s.Done() <-s.Done()
}
``` ```
**NOTE**: for `Delay` optionals arguments, check the `NewTask` method documentation for more details. **NOTE**: for `Delay` optionals arguments, check the `NewTask` method documentation for more details.