使用 time.Ticker 来定期执行检查,间隔可以根据需求调整(例如每秒检查一次)。
package mainimport ("fmt""sync""time"
)var (gDeviceList= make(map[string]int)mu sync.MutexmaxCheckCount = 30
)func main() {// 模拟数据插入gDeviceList["device1"] = 0gDeviceList["device2"] = 0// 使用 goroutine 在后台处理go monitorDevices()// 模拟其他工作time.Sleep(5 * time.Second)// 打印最后剩余的设备mu.Lock()for udid, count := range gDeviceList{fmt.Printf("UDID: %s, Count: %d\n", udid, count)}mu.Unlock()
}func monitorDevices() {ticker := time.NewTicker(1 * time.Second)defer ticker.Stop()for range ticker.C {mu.Lock()for udid, count := range gDeviceList{gDeviceList[udid] = count + 1if count > maxCheckCount {delete(gDeviceList, udid)}}mu.Unlock()}
}