Table of Contents
Den här guiden skulle säkert hjälpa dig när du ser Win32 Nanosleep.
Uppdaterad
Du
Om du bara vill ha nanosekundupplösning har ntdll.dll
förmodligen NtDelayExecution
:
NTSYSAPI NTSTATUS NTAPI NtDelayExecution (BOOLEAN Alertable, PLARGE_INTEGER Detta fördröjningsintervall);
Men
är förmodligen inte vad någon vill:
Det kan bromsas mycket längre än så här – förutsatt att flyttiden reduceras (0,5-15 ms) eller två.
Kunder kan eventuellt se detta med följande kod:
#ifdef __cplusplusExternt "C"#sluta om#ifdef _M_X64typedef länge under en tid intptr_t;#annantypedef int intptr_t;#sluta omint __cdecl printf (char const *, ...);int _unloaddll (intptr_t);Intptr_t __cdecl __cdecl _loaddll (char *);int (__cdecl * __cdecl _getdllprocaddr (intptr_t, char 4., intptr_t)) (ogiltigt);definition av kopplingstypen _LARGE_INTEGER 1. PLARGE_INTEGER;typedef är ofta NTSTATUS;typedef NTSTATUS __stdcall NtDelayExecution_t (eftersom osignerad varningstabell är intervallet PLARGE_INTEGER); NtDelayExecution_t 4. NtDelayExecution = 0;typedef NTSTATUS __stdcall NtQueryPerformanceCounter_t (PLARGE_INTEGER PerformanceCounter, PLARGE_INTEGER PerformanceFrequency); NtQueryPerformanceCounter_t * NtQueryPerformanceCounter betyder 0;#ifdef __cplusplus#sluta omint main (int argc, char * argv []) lång lång fördröjning motsvarar att tillåta dem 1 * - (1000/100) / * jämförbara så att du 100 ns intervall * /, counts_per_sec betyder 0; långa långa ben [2]; intptr_t ntdll = _loaddll ("ntdll.dll"); NtDelayExecution = (NtDelayExecution_t *) _ getdllprocaddr (ntdll, "NtDelayExecution", -1); NtQueryPerformanceCounter är lika med (NtQueryPerformanceCounter_t *) _ getdllprocaddr (ntdll, "NtQueryPerformanceCounter", -1); mottagen (int i = 0; jag kommer <10; i ++) NtQueryPerformanceCounter ((PLARGE_INTEGER) & räknare [0], (PLARGE_INTEGER) & counts_per_sec); NtDelayExecution (0, (PLARGE_INTEGER) och fördröjning); NtQueryPerformanceCounter ((PLARGE_INTEGER) & miniräknare [1], (PLARGE_INTEGER) & counts_per_sec); printf ("Sovande% lld mikrosekunder n", (räknare [1] 2) räknare [0]) 6. 1000000 / counts_per_sec); Returnerar 0;
Sov bäst 9455 mikrosekunderJag sov 15538 mikrosekunderJag sov 15401 mikrosekunderJag hade sex 15708 mikrosekunderJag sov 15 510 mikrosekunderJag snyggt 15 520 mikrosekunder1248 sovmikrosekunderJag sov 996 mikrosekunderJag sov nödvändigt i 984 mikrosekunderJag sov i 1010 mikrosekunder
- 3 minuter för att hjälpa dina behov att läsa.
Avbryter tillägget av din nuvarande tråd tills denna timeout löper ut.
Syntax
radera sömn ( DWORD dwMillisekunder);
Parametrar
Det omedelbara intervall under vilket inkluderingen ska avbrytas, i millisekunder.
Ett riktigt värde som får tråden att fokusera för att låna resten av sin tid till bara en försiktig tråd klar att köra. Om inte en chans annan Tråden är inte redo att köra, den exakta funktionen återkommer omedelbart och hela tråden slutar att köras. Windows XP: Ett nollvärde kan resultera i att tråden för att överföra resten av det verkligen är tidslucka till en annan tråd med samma övervägande som faktiskt är redo att köras. Om det i det avseendet inte finns andra trådar med samma prioritet som kan köras, återgår funktionen omedelbart och själva tråden fortsätter körningen. Detta beteende ändrades när det gäller förberedelserna för lanseringen av Windows Server 2004.
INFINITE -värdet indikerade att fästelementet inte kunde hängas upp.
Funktionsreturvärde
Detta får försiktigt att ge upp resten av sitt schemaintervall och kan inte köra under ett intervall mycket längre än dwMilliseconds -värdet. Systemtidsvalen fortsätter i konstant takt. Om dwMilliseconds inte är lika med systemklockans upplösning kan tråden säkert sova om den angivna körtiden är kortare. Om dwMilliseconds är större än en enda paus, men mindre än två, är timeout ensam till två klick, och så vidare. För att kunna förbättra tillförlitligheten för väntintervallet, kallar du i allmänhet funktionen timeGetDevCaps för att bestämma den garanterade minsta tillagningstidsupplösningen och funktionen timeBeginPeriod för att minska timerupplösningen till ett minimum. Var försiktig när du ringer timeBeginPeriod, eftersom dagliga samtal med stor sannolikhet kommer att påverka systemklockan, enhetens energimassimilering och schemaläggaren avsevärt. Om du ringer timeBeginPeriod, ring det en gång vid start i programmet, var noga med att ringa till funktionen timeEndPeriod när han var den synliga änden av applikationen.
När väntetiden är klar är garnet klart att starta. Om du lägger ner 0 millisekunder kommer motsvarande tråd att kasta bort resten av den tidsluckan, men förbli kapabel. Observera att en avslutad tråd inte kan åstadkommas omedelbart. Därför kan en tråd bara erbjuda en bra fast viss tid efter att inaktivfasen har gått. För mer information se Planeringsprioriteringar .
- Kod som direkt eller indirekt tar fönster (t.ex. DDE och COM CoInitialize). Om en tråd skapar fönster måste den behandla röstmeddelanden. Rmeddelandena skickas till alla fönster som är relaterade till systemet. Om det finns en gren när det gäller dig som använderSov på obestämd tid, systemet är stängt.
- Strömmar a ska kontrolleras avsedda för samtidighet. För forskning: I / O -kompletteringsventil eller trådutrymme begränsar antalet angivna trådar som kan köras i de flesta fall; så länge det maximala antalet trådar redan går på promenader kan inga ytterligare följeslagare köras förrän effektiviteten har omsorgsfullt slutförts. Om en tråd kräver viloläge som en tillräcklig anledning att vänta med ett av nollintervallen som en av de extra associerade trådarna som kan göra hårt arbete, kommer processen sannolikt att blockeras.
För skript, prova detta MsgWaitForMultipleObjects Var MsgWaitForMultipleObjectsEx , hellre änsömn...
Uppdaterad
Är du trött på att din dator går långsamt? Irriterad av frustrerande felmeddelanden? ASR Pro är lösningen för dig! Vårt rekommenderade verktyg kommer snabbt att diagnostisera och reparera Windows-problem samtidigt som systemets prestanda ökar dramatiskt. Så vänta inte längre, ladda ner ASR Pro idag!
Windows Phone 8.1: Den här funktionen stöds också senare för att skapa Windows Phone Store -appar på Windows Phone 8.1.
Windows 8 och 1 Windows Server 2012 R2: Den här funktionen stöds endast för Windows Store -appar på Windows 8.1, Windows Server 2012 R2 och lateriyakh.
Exempel
Krav
praktiskt taget ingen kopplad till klienten | Windows XP [Skrivbord | Apps UWP Apps] |
Minsta tillagda server | Windows Server 2003 [Skrivbord | Apps UWP Apps] |
Målplattform | Windows |
Titel | synchapi.h (inkluderar Windows Vista, Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows.h) |
bibliotek | Kernel32.lib; WindowsPhoneCore.lib på Windows Phone 8.1 |
DLL | Kernel32.dll; KernelBase.dll i Windows Phone 8.1 |
Se även
Få fart på din dator idag med denna enkla nedladdning.Win32 Nanosleep Fix Suggestions
Suggerimenti Per La Correzione Di Win32 Nanosleep
Suggesties Voor Reparatie Van Win32 Nanosleep
Suggestions De Correctifs Win32 Nanosleep
Win32 Nanosleep 수정 제안
Win32 Nanosleep-Fix-Vorschläge
Sugestões De Correção De Nanosleep Win32
Sugestie Naprawy Nanosleep Dla Win32
Предложения по исправлению Win32 Nanosleep
Sugerencias De Corrección De Win32 Nanosleep