2010-12-27 14 views
7

私は、起動してから離散的な間隔の時間間隔を与えるプロセスを実装する方法を考えていました。 ここで正確さが失われますか?しばらくして、クライアントの酷使を受けてから、正確性を損なうことなくこれを実装するにはどうすればよいですか?私はErlangでこれをどうやって行うのか、まったく困惑しています。Erlangの正確なクロック

当然私はnow()のようなシステムコールを使いたくありません。

答えて

10

あなたがやっているような手動のティックカウンティングは、わずかなスケジューリングのばらつきや機能の実行オーバーヘッドによって正確になることはありません。

あなたがしたいのは、プロセスが開始されるときにtimestampを取得し、それを関数への各再帰呼び出しに渡すことです。次に、プロセスを開始してから経過したティック数(マイクロ秒単位)を取得する場合は、新しいタイムスタンプを取得し、両方をnow_diffに渡します。

"チック"という独自の概念を使用しているように見えるので、「ティック」が何マイクロ秒であるのか把握し、最終結果を分割するだけです。

+0

はい私はこれが最も簡単な方法だと考えています。 "tick resolution"という概念を "after .."タイムアウトで使用して、再帰呼び出しの回数を減らすことができます。 – buddhabrot

関連する問題