[解決済み] gettimeofday()はマイクロ秒の分解能が保証されていますか?
質問
私は、もともと Win32 API 用に書かれたゲームを Linux に移植しています (つまり、Win32 移植版の OS X 移植版を Linux に移植しているのです)。
私は
QueryPerformanceCounter
を、プロセス起動からのuSecondsを与えることで実装しています。
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
これと
QueryPerformanceFrequency()
は、周波数として一定の 1000000 を与えることで、うまく機能します。
私のマシンでは
を含む 64 ビット変数を与えます。
uSeconds
を含む 64 ビット変数を与えています。
そこで はポータブルなのでしょうか? カーネルがある方法でコンパイルされた場合、異なる動作をすることが判明したとか、そういうことは避けたいのです。しかし、Linux 以外のものには移植不可能であっても構いません。
どのように解決するのですか?
そうかもしれません。しかし、もっと大きな問題があります。
gettimeofday()
は、システム上にタイマーを変更するプロセス (例えば、ntpd) がある場合、不正確なタイミングになることがあります。しかし、quot;normal" linuxでは、私は
gettimeofday()
は10usです。それは前方および後方にジャンプすることができ、時間は、結果的に、あなたのシステム上で実行されているプロセスに基づいています。これは事実上、質問の答えをノーにしています。
を調べる必要があります。
clock_gettime(CLOCK_MONOTONIC)
を見てください。これは、マルチコア システムや外部クロック設定などのために、いくつかの少ない問題に悩まされています。
また
clock_getres()
関数も見てください。
関連
-
LinuxでSteamをダウンロードしインストールする方法
-
Linux ddコマンド詳細説明:データのバックアップ、およびバックアッププロセスでのフォーマット変換のケース
-
[解決済み] IOCTL Linuxデバイスドライバ [終了しました]
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] mkdirのオプションが明確でない
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] 複数のPDFファイルを1つのPDFに結合/変換する【終了】。
-
[解決済み] Linux/Unixで$PATHを永久に設定する方法 [終了しました].
-
[解決済み] Linux で時間を計測する - time vs clock vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux ddコマンド詳細説明:データのバックアップ、およびバックアッププロセスでのフォーマット変換のケース
-
centos7 インストール クリックハウスとセット ユーザー名 パスワード ケース 詳細
-
deepin20のサブネットマスクはどこですか?deepinのサブネットマスクを表示するためのヒント
-
ロックされたdeepinファイルを削除する方法は?deepinのロック付きファイルを削除する方法のヒント
-
deepin20を使って、ドローイングボードで画像を開くには?deepinのお絵かき掲示板で画像を開く2つの方法
-
[解決済み] ディレクトリInodeと通常ファイルInodeの比較
-
[解決済み] エラーです。Can't open display: (null)と表示されることがあります。
-
[解決済み] Linuxでファイルをシンボリックリンクするには?[クローズド]
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
-
[解決済み] ターミナルで現在の日付と時刻を取得し、それに対してターミナルでカスタムコマンドを設定するにはどうすればよいですか?[クローズド]です。