Это старая нить, которая приходит в много моих поисков, но Win7 имеет новый планировщик и, кажется, ведут себя иначе, чем выше.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
DateTime dtEnd = DateTime.Now.AddSeconds(1.0);
int i = 0;
while (DateTime.Now < dtEnd)
{
i++;
Thread.Sleep(1);
}
Console.WriteLine(i.ToString());
i = 0;
long lStart = DateTime.Now.Ticks;
while (i++ < 1000)
Thread.Sleep(1);
long lTmp = (DateTime.Now.Ticks - lStart)/10000;
Console.WriteLine(lTmp.ToString());
Console.Read();
}
}
}
С выше кода, Мой первый результат дал 946. Таким образом, в отрезок времени 1 с использованием второго 1 мс снам, я получил 946 пробуждения взлетов. Это очень близко к 1 мс.
Вторая часть спрашивает, сколько времени требуется, чтобы выполнить 1000 событий сна в 1 мс каждый. Я получил 1034 мс. Опять же, почти 1 мс.
Это было на 1.8GHz Core2Duo + Win7 с .NET 4.0
Edit: помните, что сон (х) не означает, что просыпаться в это время, это не означает, что меня будить не ранее, чем на этот раз , Это не гарантировано. Хотя, вы можете увеличить приоритет потока, и Windows должна запланировать ваш поток до потоков с более низким приоритетом.
Все ответы до сих пор указывают на то, что эффект будет незначительным, но можете ли вы дать некоторое разъяснение о том, что вы пытаетесь сделать с этим? – JMD
Я просто пытаюсь проверить, работает ли мое приложение GUI в течение всего этого времени из-за короткой задержки 1 мс. –