1

基盤となるOSがこれをサポートしていると仮定して、1970年1月1日00:00 GMT(ゼロ時間)からの経過時間であるタプル{MegaSecs、Secs、MicroSecs}を返します。それ以外の場合は、他の時点が選択されます。このBIFへの後続の呼び出しは、継続的に増加する値を返すことも保証されています。したがって、now()からの戻り値を使用して、一意のタイムスタンプを生成できます。高速マシンでタイトループで呼び出された場合、ノードの時間が歪む可能性があります。

太字の文はどういう意味ですか?私の英語はあまり上手ではないので少し混乱しています:)それはタイムラインが45度で上昇していることを意味しますerlang:now/0か、それとも頻繁に呼び出すとノードのパフォーマンスが低下することを意味しますか?

どうもありがとうございます。

4

1 に答える 1

5

erlang:now/0は常に増分数を返すように構築されています(つまり、はMicroSecs常に1だけバンプされることが保証されます)。now()これは、システム内で(少なくともVMの1つのセッション中に)一意のIDとして返される値を使用できるため便利です。

ただし、十分に速いループ(つまり、ループごとに1マイクロ秒より速い場合もある)を実行すると、使用可能なマイクロ秒よりも多くのマイクロ秒を「要求」する可能性があることも意味します。したがって、実際には現在の値を超えて時間をインクリメントします。(もちろん、これは非常に悪いことです)

于 2012-10-10T07:51:00.547 に答える