使用 time.Ticker 来定期执行检查,间隔可以根据需求调整(例如每秒检查一次)。
go
package main
import (
"fmt"
"sync"
"time"
)
var (
gDeviceList= make(map[string]int)
mu sync.Mutex
maxCheckCount = 30
)
func main() {
// 模拟数据插入
gDeviceList["device1"] = 0
gDeviceList["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 + 1
if count > maxCheckCount {
delete(gDeviceList, udid)
}
}
mu.Unlock()
}
}