猿问

在 golang、timer 或 goroutine 循环中等待事件到期的最佳方法是什么?

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

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

2,使用循环与例程。启动一个例程来运行一个循环。每半小时,goroutine 会检查事件是否发生。如果事件发生,切换到第三种状态。否则,继续循环直到特定天数到期,然后切换到第二个状态。

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


三国纷争
浏览 207回答 1
1回答

守着星空守着你

由于您提到了几天的时间段,在给定的两个时间段中,您可能应该选择第二个选项。通过这种方式,您可以将状态存储到文件(或数据库)并在必要时重新启动该过程。第一个选项使存储状态更加困难,但仍然可能。
随时随地看视频慕课网APP

相关分类

Go
我要回答