feat: add aliyundrive driver
This commit is contained in:
35
pkg/cron/cron.go
Normal file
35
pkg/cron/cron.go
Normal file
@ -0,0 +1,35 @@
|
||||
package cron
|
||||
|
||||
import "time"
|
||||
|
||||
type Cron struct {
|
||||
d time.Duration
|
||||
ch chan struct{}
|
||||
}
|
||||
|
||||
func NewCron(d time.Duration) *Cron {
|
||||
return &Cron{
|
||||
d: d,
|
||||
ch: make(chan struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Cron) Do(f func()) {
|
||||
go func() {
|
||||
ticker := time.NewTicker(c.d)
|
||||
defer ticker.Stop()
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
f()
|
||||
case <-c.ch:
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (c *Cron) Stop() {
|
||||
c.ch <- struct{}{}
|
||||
close(c.ch)
|
||||
}
|
Reference in New Issue
Block a user