WindowsのC言語で本格的な開発をすることはほとんどなく、今回しっかりハマってしまいました。次のようなテストプログラムで、簡単なライブラリのテストをしようと考えました。Sleep()はミリ秒単位の遅延らしいので、当然のように1ms間隔で呼び出していました。Cコピーwhile(1) { MBx_Ticks(1000); // 换算为微秒传入MBx驱动 TestMemUpdate(1); // 毫秒传入测试函数 Sleep(1); } 当然、まったく正確ではありません。Pythonと同じく当てになりません。実際の遅延を測定するには、次のコードを追加します。Cコピー#include <windows.h> #include <time.h> SYSTEMTIME t1; while(1) { MBx_Ticks(1000); // 换算为微秒传入MBx驱动 TestMemUpdate(1); // 毫秒传入测试函数 Sleep(1); /* 打印毫秒时间戳 */ GetSystemTime(&t1); printf("%ld\n", (int)t1.wMilliseconds); } 出力の一部を切り取ってみると次の通りです。1msとはかなりかけ離れていますが、テストに使うだけなら気にしなくて大丈夫ですけどね。
Windows C言語のSleep()関数の精度
WindowsのC言語で本格的な開発をすることはほとんどなく、今回しっかりハマってしまいました。
次のようなテストプログラムで、簡単なライブラリのテストをしようと考えました。Sleep()はミリ秒単位の遅延らしいので、当然のように1ms間隔で呼び出していました。
当然、まったく正確ではありません。Pythonと同じく当てになりません。実際の遅延を測定するには、次のコードを追加します。
出力の一部を切り取ってみると次の通りです。1msとはかなりかけ離れていますが、テストに使うだけなら気にしなくて大丈夫ですけどね。