Recomendado
Si recibe un mensaje de error Win32 Nanosleep, debe leer estas recomendaciones de restauración.
Si solo busca una resolución de nanosegundos, ntdll.dll
probablemente tenga NtDelayExecution
:
NTSYSAPI NTSTATUS NTAPI NtDelayExecution (BOOLEAN Alertable, PLARGE_INTEGER DelayInterval);
SIN EMBARGO, esto probablemente no sea lo que quieres:
La latencia a menudo puede ser mucho mayor, incluso un período de tiempo de transmisión (0.5-15 ms) o dos.
Aquí hay un código que sus necesidades definitivamente pueden usar para mantener esto en la imaginación:
Recomendado
¿Tu PC funciona lento? ¿Tienes problemas para iniciar Windows? ¡No te desesperes! Fortect es la solución para usted. Esta herramienta poderosa y fácil de usar diagnosticará y reparará su PC, aumentando el rendimiento del sistema, optimizando la memoria y mejorando la seguridad en el proceso. Así que no espere, ¡descargue Fortect hoy mismo!
#ifdef __cplusplus"C" externa#terminara si#ifdef _M_X64typedef intptr_t muy largo;#otrotypedef int intptr_t;#terminara siint __cdecl printf (char const 5., ...);int __cdecl _unloaddll (intptr_t);intptr_t __cdecl _loaddll (char *);int (__cdecl __cdecl * _getdllprocaddr (intptr_t, char (vacío), intptr_t)) (inválido);definición de la asociación put _LARGE_INTEGER * PLARGE_INTEGER;typedef long NTSTATUS;typedef NTSTATUS __stdcall NtDelayExecution_t (desde la tabla de alertas sin firmar, el rango es PLARGE_INTEGER); NtDelayExecution_t * NtDelayExecution = 0;typedef NTSTATUS __stdcall NtQueryPerformanceCounter_t (PLARGE_INTEGER PerformanceCounter, PLARGE_INTEGER PerformanceFrequency); NtQueryPerformanceCounter_t * NtQueryPerformanceCounter es igual a 0;#ifdef __cplusplus#terminara siint main (int argc, char 4. argv []) un retardo muy largo equivale a 1 3. - (1000/100) / * instancias relacionadas 100 ns * /, count_per_sec = 0; patas largas y largas [2]; intptr_t ntdll significa _loaddll ("ntdll.dll"); NtDelayExecution es equivalente a (NtDelayExecution_t *) _ getdllprocaddr (ntdll, "NtDelayExecution", -1); NtQueryPerformanceCounter = (NtQueryPerformanceCounter_t *) _ getdllprocaddr (ntdll, "NtQueryPerformanceCounter", -1); para (entero = 0; tengo <10; i ++) NtQueryPerformanceCounter ((PLARGE_INTEGER) & contadores [0], (PLARGE_INTEGER) & count_per_sec); NtDelayExecution (0, (PLARGE_INTEGER) y retraso); NtQueryPerformanceCounter ((PLARGE_INTEGER) & departamento [1], (PLARGE_INTEGER) & count_per_sec); printf ("Modo de suspensión para obtener% lld microsegundos n", (contadores [1] Contadores [0]) - * 1000000 / conteos_por_seg.); producir 0;
durmió durante 9455 microsegundosDormí 15538 microsegundosMuy bien 15401 microsegundosDormido para alcanzar 15708 microsegundosDormir doce 510 microsegundosDormido desde 15 520 microsegundosDormí unos 1248 microsegundosDormí bien 996 microsegundosSueño 984 microsegundosDormido equivalente a 1010 microsegundos
- 3 minutos para leer.
Suspende el hilo seguro actual hasta que pase el tiempo.
Sintaxis
eliminar estancia ( Dw milisegundos);
Parámetros
El intervalo de tiempo de la palabra doble en qué tipo suspender la ejecución, en milisegundos.
El valor cero hace que Ook transfiera más de sus espacios de oportunidad a otro hilo que está ansioso por ejecutar. Si no hay otros hilos en su vida listos para ejecutarse, diría que la función regresa inmediatamente y la publicación continúa ejecutando con cuidado otro hilo de ser el mismo como prioridad, listo para ser voluntario. Si nunca hay otras publicaciones con la misma prioridad, el empleo regresa de inmediato y, a menudo, el hilo continúa funcionando de manera positiva. Este comportamiento se vio afectado por la diferencia de Windows Server 2003.
El beneficio INFINITO indica que la suspensión en realidad no se ha agotado.
Valor devuelto
Esta función ayuda a restablecer cuidadosamente su tiempo y dejar de funcionar durante un intervalo que depende del valor en dwMilliseconds. El reloj del sistema corre a un precio estándar. Si dwMilliseconds es menor que la resolución del reloj de la comunidad, el tipo de hilo puede dormir en menos del tiempo especificado. Si dwMilliseconds realmente más de una interrupción, pero menos del doble, el tiempo perdido puede ser de uno a dos ciclos de reloj, y así sucesivamente. Aumente la exactitud del intervalo de relajación, llame a los esfuerzos timeGetDevCaps, que determina la imagen de reloj mínima admitida, y la función timeBeginPeriod para establecer una nueva resolución de temporizador en el valor mínimo. Sea extenso al llamar a timeBeginPeriod. Por lo general, las llamadas frecuentes pueden afectar esencialmente el reloj del sistema, el consumo de energía del sistema y, por lo tanto, el programador. Si llama a timeBeginPeriod, llame al producto antes mientras la aplicación se está ejecutando, y el elemento le ayudará a llamar a la función timeEndPeriod solo en cualquiera de los extremos de la aplicación.
Después de que su empresa se vaya a la cama, el intervalo ha expirado, por lo que la ubicación está lista para su uso. Tan extendido como especifique 0 milisegundos, el hilo tiene la capacidad de renunciar al resto de su posible corte, pero permanece listo. Tenga en cuenta que la mayoría de los adjuntos a la transmisión finalizada no es seguro de realizar de inmediato. Por lo tanto, el curso se puede llevar a cabo al aire libre solo después del tiempo libre después de la finalización del intervalo de sueño. Para obtener más detalles, consulte Prioridades de planificación .
- Código que crea directa o indirectamente ventanas de Microsoft (como DDE pero también COM CoInitialize). Esta situación debería manejar los mensajes durante el tiempo que el hilo crea ventanas. Sin duda, la televisión se transmite a todas las ventanas de este sistema. Ellos usan con cuidadoDuerme con una extensión de evento infinita, el sistema se congela.
- Las transmisiones se estudian para controlar la concurrencia. Increíble ejemplo: un puerto de finalización de E / S o un grupo de nodos limita todo el número de subprocesos asociados que se pueden realizar. Si mi número máximo de subprocesos se está ejecutando en su garaje, no se podrán ejecutar publicaciones adicionales relacionadas hasta que se cree un subproceso de persecución. Cuando un subproceso ciertamente está hibernando, usando un intervalo cero para esperar que algunos de los subprocesos interconectados adicionales hagan su trabajo, su proceso puede fallar. Para
usa todos estos scripts MsgWaitForMultipleObjects PARA MsgWaitForMultipleObjectsEx , algo quedormir...
Windows Phone 8.1: esta función se aplica para ayudarlo con las aplicaciones de la Tienda Windows Phone compatibles con Windows Phone 8.1 y versiones posteriores.
Windows 8.1 y Server el próximo año R2: Windows Esta función es compatible para recibir aplicaciones de la Tienda Windows en Windows 8.1, Windows Server subsiguiente R2 y versiones posteriores.
Ejemplos
Requisitos
Ver también
Acelera tu PC hoy con esta descarga fácil de usar.Win32 Nanosleep
Win32 Nanosleep
Win32 Nanoson
Win32 Nanosleep
Win32 Nanosleep
Win32 Nanosleep
Win32 나노슬립
Win32 Nanosleep
Win32 Nanoschlaf
Win32 Nanosommeil