example.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package timercache
  2. import (
  3. "fmt"
  4. "os"
  5. "os/signal"
  6. "time"
  7. )
  8. //package timer
  9. // https://blog.csdn.net/li_101357/article/details/90111230
  10. // https://studygolang.com/articles/13173
  11. // https://github.com/caucy/timeloop/blob/master/timer/timer.go
  12. // https://studygolang.com/articles/13060
  13. var saveTimerCache *CustomCacheKeys
  14. func exmaple() {
  15. saveTimerCache = NewCustomKeys(time.Second * 5)
  16. //正常流程
  17. fmt.Println(saveTimerCache)
  18. callback1 := func(e *TimerEntry) {
  19. fmt.Println(e.GetVal())
  20. }
  21. saveTimerCache.Add("1", 1, callback1)
  22. saveTimerCache.Add("2", 2, callback1)
  23. //等待过程中进行修改
  24. saveTimerCache.Add("1", 3, callback1)
  25. //执行过程中进行修改
  26. saveTimerCache.Add("4", 4, func(e *TimerEntry) {
  27. fmt.Println(e.GetVal())
  28. saveTimerCache.Add("4", 5, callback1)
  29. })
  30. //循环缓存
  31. var callback2 func(e *TimerEntry)
  32. callback2 = func(e *TimerEntry) {
  33. fmt.Println(e.GetVal())
  34. saveTimerCache.Add("6", 6, callback2)
  35. fmt.Printf("%#v", saveTimerCache)
  36. }
  37. saveTimerCache.Add("6", 6, callback2)
  38. //等待时 删除
  39. saveTimerCache.Add("7", 7, callback1)
  40. saveTimerCache.Remove("7")
  41. //执行时删除
  42. var callback3 func(e *TimerEntry)
  43. callback3 = func(e *TimerEntry) {
  44. fmt.Println(e.GetVal())
  45. saveTimerCache.Remove("8")
  46. }
  47. saveTimerCache.Add("8", 8, callback3)
  48. c1 := make(chan os.Signal, 1)
  49. signal.Notify(c1, os.Interrupt, os.Kill)
  50. sig := <-c1
  51. fmt.Printf("Grave closing down (signal: %v)", sig)
  52. }