gocron创建任务的多个实例

我在使用此软件包的脚本中遇到问题:

    "github.com/jasonlvhit/gocron"

我找不到错误后写了这个小小的testscript,结果是执行cronjobs的次数是预期的两倍:

func main() {

for i := 0; i < 3; i++ {

channel := make(chan string)

go taskCron(channel, i)

}

time.Sleep(time.Second * 5)

gocron.Clear()

fmt.Println("stop this shit")

}

func task(i int) {

fmt.Println("still running...", i)

}

func taskCron(channel chan string, i int) {

gocron.Every(4).Seconds().Do(task, i)

<-gocron.Start()

}

运行它给我这个输出:

——▶go run *.go

still running... 0

still running... 0

still running... 1

still running... 1

still running... 2

still running... 2

still running... 0

still running... 1

still running... 2

stop this

有谁知道我如何能在不重复的情况下创建大量的Gocron作业?

谢谢 :)

回答:

还可以吧

<-gocron.Start()

将开始已经重新开始的作业,因此要解决我的问题,我不得不将脚本更改为此:

func main() {

for i := 0; i < 3; i++ {

taskCron(i)

}

channel2 := make(chan int)

go startCron(channel2)

time.Sleep(time.Second * 5)

gocron.Clear()

fmt.Println("stop this")

}

func task(i int) {

fmt.Println("still running...", i)

}

func taskCron(i int) {

gocron.Every(4).Seconds().Do(task, i)

}

func startCron(channel chan int) {

<-gocron.Start()

}

我希望这对遇到相同问题的任何人有所帮助!

以上是 gocron创建任务的多个实例 的全部内容, 来源链接: utcz.com/qa/412600.html

回到顶部