我搜索了這個問題,但沒有看到答案。如果它是重複的,我會很樂意關閉它。Thread.Sleep(1)需要超過1ms
我目前正在嘗試對一項技術進行一些性能評估,並且看到了一些相當令人難以置信的結果,所以我決定嘗試一些。在那我想嘗試看看秒錶班是否返回了我的預期。
Stopwatch sw = Stopwatch.StartNew();
Thread.Sleep(1);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
在這種情況下,我幾乎看到15ms的返回值。我理解DateTime的解決方案在那裏,但不應該Thread.Sleep(1)睡1ms線程?我正在使用的系統返回Stopwatch.IsHighResolution爲真,並且它在.NET 4中運行。
背景: 此代碼的完整和適當的形式旨在收集Aerospike db get請求上的一些數字。數據庫不在同一個盒子上。當我在中間查詢時打印出sw.ElapsedMilliseconds時,我看到的主要是亞毫秒響應,這聽起來有點可疑,考慮到我的Java等效代碼在大多數時間返回的可信5ms-15ms響應。 Java代碼使用了System.nanoTime()的區別。通過在我的C#代碼submilli響應我的意思是Console.WriteLine(sw.ElapsedMilliseconds)打印0.
我認爲金額非常低,需要更多的感謝實際時間才能讓線程進入睡眠狀態並再次醒來。我建議你嘗試增加'sleep()'參數,看看參數和實際的睡眠時間是相等的。 – Mehraban
我逐步將其提高到100左右,並且我仍然一直看到5到15毫秒的高。我瞭解它不是一個實時操作系統,但我沒有想到會看到這 – Rig
我不會說它必然是重複的,但答案就在那裏。我應該刪除這個問題嗎? – Rig