| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package main
- import (
- "log"
- "time"
- )
- func main() {
- log.SetFlags(log.LstdFlags | log.Lshortfile)
- interval := 20
- sleepTime := time.Second*5
- var a []map[int]int64 // id:lasttime
- for i := 0; i < 15; i++ {
- a = append(a, map[int]int64{i:0})
- }
- fn := func() {
- for id, m := range a {
- now := time.Now().Unix()
- if m[id] == 0 {
- m[id] = now
- } else {
- if int(now - m[id]) >= interval {
- log.Println(id, time.Now())
- m[id] = now
- time.Sleep(sleepTime)
- }
- }
- }
- }
- tk := time.NewTicker(time.Second)
- go func() {
- for range tk.C {
- fn()
- }
- }()
- time.Sleep(sleepTime*100)
- }
|