哪个是等待事件直到golang,timer或goroutine循环到期的最佳方式?

时间:2016-04-12 07:22:41

标签: go goroutine

状态机的第一个状态是等待一个事件,如果事件在某些天没有发生,状态机将切换到第二个状态。如果事件发生在该期间,状态机将切换到第三状态。

我有两个选择: 1,使用计时器。将某个计时器设置为特定日期。当时间到了,检查事件是否发生。如果发生,请切换到第三个状态。如果没有,请切换到第二个状态。在此期间可能会创建数千个计时器。

2,使用常规循环。启动例程以运行循环。每隔半小时,goroutine会检查事件是否发生。如果事件发生,请切换到第三个状态。否则,保持循环直到某些天过期,然后切换到第二个状态。

我的问题是time.Timer vs goroutine,哪个更适合这种情况?

1 个答案:

答案 0 :(得分:1)

既然您提到了两天的时间段,那么您应该选择第二个选项。这样,您可以将状态存储到文件(或数据库),并在必要时重新启动该过程。第一种选择使得存储状态更加困难,但仍然可能。