用 golang 的一个定时任务的第三方包,每隔 5s 执行 foo 函数,如下:
func foo() { onlineRooms := getOnlineRooms() for _, room := range onlineRooms { go doSomeThing(room) } }
这里取出所有在线的房间ID,然后启用 goroutine 执行 doSomeThing 函数,这个函数里有计算,从 Redis,MySQL 读写数据等操作,如果第一轮调用没执行完,就开始第二轮调用,就会有计算错误。
那么我想每次定时任务来的时候,判断这个函数有没有执行完,如果没有执行完就不重新调用,否则才调用,在 golang 中如何实现这个判断呢?
千巷猫影
杨__羊羊
四季花海
相关分类