1

返回元组 {MegaSecs, Secs, MicroSecs},它是自 1970 年 1 月 1 日 00:00 GMT(零小时)以来经过的时间,假设底层操作系统支持这一点。否则,将选择某个其他时间点。还可以保证对该 BIF 的后续调用返回不断增加的值。因此,now() 的返回值可用于生成唯一的时间戳,如果在快速机器上的紧密循环中调用它,则节点的时间可能会出现偏差。

粗体字是什么意思?我有点困惑,因为我的英语不是很好:) 这是否意味着时间线以 45 度上升,或者是否意味着如果调用erlang:now/0过于频繁,节点的性能会下降?

非常感谢。

4

1 回答 1

5

erlang:now/0被构建成它总是返回一个递增的数字(也就是说,MicroSecs总是保证会被 1 增加)。这很有用,因为它让您可以使用返回的值now()作为系统中的唯一 ID(至少在 VM 的一个会话期间)。

但是,这也意味着如果您运行足够快的循环(即,有时每个循环快于 1 微秒),您可能会“请求”比可用的微秒更多的微秒。所以你实际上会增加时间超过它的当前值!(当然,这是一件非常糟糕的事情)

于 2012-10-10T07:51:00.547 回答