关于erlang的一点困惑:现在/ 0手册

时间:2012-10-10 07:04:47

标签: erlang

  

返回经过的元组{MegaSecs,Secs,MicroSecs}   格林威治标准时间00:00,1970年1月1日(零小时)的假设时间   底层操作系统支持这一点。否则,其他一些点   选择时间。它也保证了后续的调用   BIF返回不断增加的值。因此,返回值   from now()可以用来生成唯一的时间戳,如果是,则可以用   在快速机器上紧密循环调用节点的时间   变得倾斜。

粗体句意味着什么?我有点困惑,因为我的英语不是很好:) 是否意味着时间线以45度递增,或者它是否意味着如果经常调用erlang:now/0,节点的性能会降低?

非常感谢。

1 个答案:

答案 0 :(得分:5)

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

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