Este es un viejo hilo que aparece en muchas de mis búsquedas, pero Win7 tiene un nuevo planificador y parece comportarse de manera diferente a la anterior.
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();
}
}
}
Con el código anterior, Mi primer resultado dio 946. Así, en el intervalo de tiempo de 1 segundo utilizando 1ms duerme, tengo 946 despertares. Eso es muy cerca de 1 ms.
La segunda parte pregunta cuánto tiempo lleva hacer 1000 eventos de sueño a 1 ms cada uno. Tengo 1034ms. De nuevo, casi 1ms.
Esto fue en un Core2Duo 1.8GHz + Win7 usando .Net 4.0
Editar: recordar, dormir (x) no significa despertador arriba en este momento, significa despiértame no antes de este tiempo . No está garantizado Aunque puede aumentar la prioridad del subproceso y Windows debe programar el subproceso antes de los subprocesos de menor prioridad.
Todas las respuestas hasta el momento indican que el efecto sería insignificante, pero ¿puede dar alguna aclaración sobre lo que está tratando de lograr con esto? – JMD
Estoy tratando de ver si mi aplicación GUI pasa todo el tiempo en este hilo debido a la corta demora de 1 ms. –