我在CRON PKG中使用 https://github.com/jasonlvhit/gocron/blob/master/gocron.go
import (
"fmt"
"time"
"github.com/claudiu/gocron"
)
func task() {
fmt.Println("I am runnning task.", time.Now())
}
func vijay() {
fmt.Println("I am runnning vijay.", time.Now())
}
func main() {
go test()
gocron.Start()
s := gocron.NewScheduler()
gocron.Every(5).Seconds().Do(task)
gocron.Every(10).Seconds().Do(vijay)
<-s.Start()
}
func test() {
time.Sleep(20 * time.Second)
gocron.Clear()
fmt.Println("All task removed")
}
Run Code Online (Sandbox Code Playgroud)
我的问题是删除所有工作后,我的程序仍在执行
我想在删除所有工作后中断执行
请帮帮我,我无法找到方法,我也尝试更改了PKG源代码,但无法找到方法
谢谢你们
首先,您要创建一个新的调度程序,然后等待它,但是使用默认的调度程序来运行您的作业。
接下来,您将阻塞该Start()方法返回的通道。关闭该通道以取消阻止接收操作。如果您不立即从中退出,这也会退出cron程序中的主循环main。
func main() {
ch := gocron.Start()
go test(ch)
gocron.Every(5).Seconds().Do(task)
gocron.Every(10).Seconds().Do(vijay)
<-ch
}
func test(stop chan bool) {
time.Sleep(20 * time.Second)
gocron.Clear()
fmt.Println("All task removed")
close(stop)
}
Run Code Online (Sandbox Code Playgroud)
实际上与
func main() {
gocron.Start()
gocron.Every(5).Seconds().Do(task)
gocron.Every(10).Seconds().Do(vijay)
time.Sleep(20 * time.Second)
gocron.Clear()
fmt.Println("All task removed")
}
Run Code Online (Sandbox Code Playgroud)
如果您要立即退出,则Clear()先调用然后停止调度程序并不重要,您只需退出程序即可。