c sleep how use sleep function c programs
Denna C ++ sömnhandledning kommer att diskutera sömnfunktionen i C ++ och se hur man sätter en tråd i sömn. Vi kommer också att lära oss om de andra funktionerna, nämligen. du sover:
Alla datorprogram som är en process, uppgift eller tråd kan 'sova' eller gå in i inaktivt tillstånd under en viss tid. Avrättningen avbryts under denna tidsperiod. Körningen återupptas när sömnintervallet löper ut eller en signal eller avbrott gör att körningen återupptas.
För att sätta ett program (uppgift, process eller tråd) i vila använder vi ett sömnsystemsamtal. Ett typiskt sömnsystemsamtal tar tiden som parameter som anger hur mycket tid programmet behöver för att sova eller förbli inaktivt.
=> Kolla hela C ++ träningsserien här.
Vi har också usleep () och thread :: sleep-funktioner som vi kommer att diskutera i denna handledning. Den angivna tiden är mestadels i millisekunder, mikrosekunder eller sekunder och beroende på det har vi olika funktioner som kan sätta programmet i viloläge.
Vad du kommer att lära dig:
- Sleep () -funktion
- Usleep () -funktion
- Tråd Sleep (sleep_for & sleep_until)
- Vanliga frågor
- Slutsats
- Rekommenderad läsning
Sleep () -funktion
C ++ språk ger inte en egen sömnfunktion. Men operativsystemets specifika filer som unistd.h för Linux och Windows.h för Windows tillhandahåller denna funktionalitet.
När vi använder operativsystemet Linux eller UNIX måste vi inkludera rubrikfilen “unistd.h” i vårt program för att använda sova () fungera.
När vi använder Windows operativsystem måste vi inkludera rubriken 'Windows.h' för att använda sleep () -funktionen. Så för att kunna skriva ett plattformsprogram kan vi ha koden som visas nedan så att någon av rubrikerna kommer att användas.
#ifdef _WIN32 #include #else #include #endif
Sovfunktionen beskrivs nedan:
Funktionsprototyp:
osignerad sömn (osignerade sekunder);
Parametrar:
sekunder => Tidsperiod i sekunder som körningen av programmet avbryts
Returvärde:
0 => Om sömnen återkommer när den begärda tiden har gått.
Om sömnen avbryts av en signal, returneras en oslöjd mängd (angiven tidsperiod minus den förflutna tiden).
Beskrivning:
Sleep () -funktionen orsakar att programmet eller den process det kallas till avbryter dess körning tillfälligt under en tidsperiod i sekunder som anges av funktionsparametern. Utförandet avbryts tills den begärda tiden har förflutit eller en signal eller ett avbrott levereras till funktionen.
Men om systemet har schemalagt någon annan aktivitet kan avstängningstiden bli längre.
Nedan följer ett C ++ - program som använder sömnfunktionen mellan två cout-uttalanden.
hur man öppnar en .xml fil
#ifdef _WIN32 #include #else #include #endif #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); sleep(10); cout << 'World'; cout << endl; return 0; }
Produktion:
Hej världen
I ovanstående program ger vi ett sömnkommando med en period på 10 sekunder efter utskrift av 'Hello'. Kompilatorn väntar i 10 sekunder efter att ha skrivit ut 'Hello' och skriver sedan ut 'World'.
Notera: Läsarna bör utföra detta program för att faktiskt förstå hur sömnkommandot fungerar
Usleep () -funktion
Rubriken 'unistd.h' ger ännu en funktion 'usleep ()' som kan avbryta körningen av ett program under en viss tidsperiod. Arbetet liknar funktionen sleep () som redan beskrivits.
Funktionsprototyp: int sovande (useconds_t useconds);
Parametrar: usekunder => Antal mikrosekunder som körningen är avstängd för
Returvärde:
0 => Usleep har återvänt framgångsrikt.
-1 & errno => Funktionen misslyckades.
Beskrivning:
Funktionen usleep () avbryter körningen av anropstråd för usekunder mikrosekunder eller tills signalen levereras till tråden som avbryter körningen.
Granulariteten hos timervärdena som används i usleep-funktionen kan vara implementeringsspecifik. Om vi behöver finare granularitet än den som anges av implementeringen avrundas det faktiska timervärdet till nästa värde som stöds.
Nedan följer ett exempel för att visa usleep () -funktionen.
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Produktion:
Hej världen
Som visas i ovanstående utdata anger vi tidsperioden som 10000 mikrosekunder för usleep-funktion och precis som det tidigare programmet som använder sömnfunktion skriver vi ut 'Hello World' -strängen.
Tråd Sleep (sleep_for & sleep_until)
C ++ 11 ger specifika funktioner för att sätta en tråd i vila.
Det finns två funktioner:
Std :: this_thread :: sleep_for
Funktionsprototyp:
template void sleep_for( const std::chrono::duration& sleep_duration );
Parametrar: sleep_duration => Tidsperiod för att sova
Returvärde: ingen
Beskrivning: Funktionen sleep_for () definieras i rubriken. Funktionen sleep_for () blockerar körningen av den aktuella tråden åtminstone under den angivna tiden, dvs. sleep_duration.
Den här funktionen kan blockeras under en längre tid än en viss tid på grund av schemaläggningsaktiviteter eller förseningar med resurskonflikter.
Ett C ++ - exempel som visar användningen av sleep_for ges nedan:
#include #include #include using namespace std; int main() { cout << 'Hello I'm waiting....' << endl; this_thread::sleep_for(chrono::milliseconds(20000) ); cout << 'Waited 20000 ms
'; }
Produktion:
Hej jag väntar ...
Väntade 2000 ms
I ovanstående program har vi en specificerad sömntid på 20000 millisekunder. Detta innebär att tråden blockeras i 20000 millisekunder innan operationen återupptas.
Std :: this_thread :: sleep_until
Funktionsprototyp:
template void sleep_until( const std::chrono::time_point& sleep_time );
Parametrar: sleep_time => Tidslängd tills tråden ska blockeras.
Returvärde: ingen
Beskrivning: Denna funktion definieras i rubriken. Funktionen sleep_until () blockerar körningen av en tråd tills sleep_time har gått. Liksom de andra funktionerna kan den här funktionen också blockera under en längre tid än en viss tid på grund av schemaläggningsaktiviteter eller förseningar med resurskonflikter.
Ett C ++ - program för sleep_until-funktion ges nedan.
#include #include #include using namespace std; void current_time_point(chrono::system_clock::time_point timePt) { time_t timeStamp = chrono::system_clock::to_time_t(timePt); cout << std::ctime(&timeStamp) << endl; } void threadFunc() { cout<<'Current Time :: '; current_time_point(chrono::system_clock::now()); chrono::system_clock::time_point timePt = chrono::system_clock::now() + chrono::seconds(60); cout << 'Sleeping Until :: '; current_time_point(timePt); this_thread::sleep_until(timePt); cout<<'Woke up...Current Time :: '; current_time_point(chrono::system_clock::now()); } int main() { std::thread th(&threadFunc); th.join(); return 0; }
Produktion:
Aktuell tid :: tor 19 sep 12:52:01 2019
Sov tills :: tor 19 sep 12:53:01 2019
Vaknade ... Aktuell tid :: Tor 19 sep 12:53:01 2019
I det här programmet låter vi tråden sova i 60 sekunder, dvs. 1 minut. När 1 minut är klar; tråd vaknar och skriver ut aktuell tid.
Vanliga frågor
F # 1) Vad gör sömn () i C ++?
Svar: Sleep () -funktionen avbryter körningen av programmet under en viss tidsperiod. Denna tidsperiod anges som ett argument för sleep () -funktionen.
F # 2) Vad är rubrikfilen för sömn i C ++?
Svar: Rubriken för sömn är 'unistd.h' för LINUX / UNIX-operativsystemet och 'Windows.h' för Windows-operativsystemet. För trådsömn som använder 'sleep_for' och 'sleep_until' -funktioner används header.
F # 3) Vad är användningen av #include Unistd H?
Svar: Rubriken 'Unistd.h' är rubriken som definierar sleep () -funktionen för att avbryta körningen av programmet.
Slutsats
I denna handledning för sömn () -funktionen har vi diskuterat sömnfunktionen och usleep () -funktionen som är densamma som sömn- och trådsömnfunktionerna, sleep_for och sleep_until. Funktionerna Sleep () och usleep () är desamma förutom den tidsenhet som används för att specificera sömntiden.
I sleep () -funktionen anges tiden i sekunder, medan i usleep () -funktionen specificeras tiden i mikrosekunder. Trådfunktionerna sleep_for () avbryter trådkörningen under en viss tidsperiod som tillhandahålls som ett argument. Den andra trådfunktionen sleep_until () avbryter körningen av tråden tills en angiven tid har gått.
Föreslagen läsning = >> Vad är trådtestning?
Det kan ta längre tid att återvända till alla diskussionsfunktioner beroende på schemaläggning eller andra resursspecifika förseningar.
=> Läs igenom den populära C ++ träningsserien här.
Rekommenderad läsning
- Pythons huvudfunktionshandledning med praktiska exempel
- Multitrådning i C ++ med exempel
- 10 bästa gratis tidsklocka programvara för tidspårning av anställda
- QTP-handledning # 21 - Hur man gör QTP-tester modulära och återanvändbara med hjälp av åtgärds- och funktionsbibliotek
- Funktioner i C ++ med typer och exempel
- Unix Utilities-program Kommandon: Vilken, Man, Find Su, Sudo (Del D)
- Deltidsfrilansande jobbmöjlighet för selenexperter
- 10 BÄSTA tidsspårningsappar för frilansare (2021 SELECTIVE)