C# 高精度延遲代碼執行時間(us/ns)

來源:互聯網
上載者:User

標籤:延遲   c#   納秒   微秒   高精度   

我們常用的延遲代碼函數如Sleep,Thread.Sleep函數,

但是它們只允許輸入毫秒,如果我們需求更高精度 如

納秒(ns)/微秒(us)的延遲代碼執行的時間 怎麼去做呢?


在我們可以看見有這樣一個傳址參數

long duetime = -10 * us;

原參數類型為 LARGE_INTEGER

定義是用long而不是double

表示需要延遲的時間 它是以100納秒為一單位

你給1表示100納秒 是該函數可接最低刻度


CreateWaitableTimer // 建立可等待計時器

SetWaitableTimer // 啟動可等待計時器

MsgWaitForMultipleObjects // 等待核心對象或訊息

CloseHandle // 關閉核心對象

範例程式碼:

        public static void Main()        {            UsDelay(5); // 5us        }        public static void UsDelay(int us)        {            long duetime = -10 * us;            int hWaitTimer = CreateWaitableTimer(NULL, true, NULL);            SetWaitableTimer(hWaitTimer, ref duetime, 0, NULL, NULL, false);            while (MsgWaitForMultipleObjects(1, ref hWaitTimer, false, Timeout.Infinite, QS_TIMER));            CloseHandle(hWaitTimer);        }
        [DllImport("kernel32.dll")]        public static extern int CreateWaitableTimer(int lpTimerAttributes, bool bManualReset, int lpTimerName);        [DllImport("kernel32.dll")]        public static extern bool SetWaitableTimer(int hTimer, ref long pDueTime,             int lPeriod, int pfnCompletionRoutine, // TimerCompleteDelegate            int lpArgToCompletionRoutine, bool fResume);        [DllImport("user32.dll")]        public static extern bool MsgWaitForMultipleObjects(uint nCount, ref int pHandles,            bool bWaitAll, int dwMilliseconds, uint dwWakeMask);        [DllImport("kernel32.dll")]        public static extern bool CloseHandle(int hObject);        public const int NULL = 0;        public const int QS_TIMER = 0x10;




C# 高精度延遲代碼執行時間(us/ns)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.