c sleep how use sleep function c programs
Denne C ++ Sleep-tutorial vil diskutere Sleep-funktionen i C ++ og se, hvordan man sætter en tråd i søvn. Vi vil også lære om de andre funktioner, nemlig. sove:
Ethvert computerprogram, der er en proces, opgave eller tråd, kan 'sove' eller gå i en inaktiv tilstand i et bestemt tidspunkt. Henrettelsen er suspenderet i denne periode. Udførelsen genoptages, når søvnintervallet udløber, eller et signal eller afbrydelse får udførelsen til at genoptages.
For at sætte et program (opgave, proces eller tråd) i dvale bruger vi et søvnsystemopkald. Et typisk søvnsystemopkald tager tiden som parameter, der angiver, hvor lang tid programmet har brug for at sove eller forblive inaktivt.
=> Tjek den komplette C ++ træningsserie her.
Vi har også usleep () og thread :: sleep-funktioner, som vi vil diskutere i denne vejledning. Den leverede tid er for det meste i millisekunder, mikrosekunder eller sekunder, og afhængigt af det har vi forskellige funktioner, der kan sætte programmet i dvale.
Hvad du lærer:
- Sleep () funktion
- Usleep () -funktion
- Tråd Sleep (sleep_for & sleep_until)
- Ofte stillede spørgsmål
- Konklusion
- Anbefalet læsning
Sleep () funktion
C ++ sprog giver ikke en egen søvnfunktion. Operativsystemets specifikke filer som f.eks unistd.h til Linux og Windows.h til Windows giver denne funktionalitet.
Når vi bruger Linux- eller UNIX-operativsystemet, skal vi medtage 'unistd.h' -hovedfilen i vores program for at bruge søvn () fungere.
Når du bruger Windows-operativsystemet, skal vi medtage “Windows.h” -overskrift for at bruge sleep () -funktionen. Så for at skrive et program på tværs af platforme kan vi have koden som vist nedenfor, så et af overskrifterne vil blive brugt.
#ifdef _WIN32 #include #else #include #endif
Søvnfunktionen er beskrevet nedenfor:
Funktionsprototype:
usigneret søvn (usignerede sekunder);
Parametre:
sekunder => Tidsperiode i sekunder, hvor udførelsen af programmet er suspenderet
Returværdi:
0 => Hvis søvn vender tilbage, efterhånden som den ønskede tid er gået.
Hvis søvn afbrydes af et signal, returneres et ikke-sovende beløb (angivet tidsperiode angivet minus den forløbne tid).
Beskrivelse:
Sleep () -funktionen får programmet eller den proces, det kaldes til, midlertidigt afbryde dets udførelse i en periode i sekunder, der er angivet af funktionsparameteren. Udførelsen er suspenderet, indtil den ønskede tid er forløbet, eller et signal eller en afbrydelse leveres til funktionen.
Men hvis systemet har planlagt en anden aktivitet, kan suspensionstiden dog være længere.
Nedenfor er et C ++ - program, der bruger søvnfunktionen mellem to cout-udsagn.
softwareudvikling livscyklus 5 faser
#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 Verden
I ovenstående program giver vi en søvnkommando med en periode på 10 sekunder efter udskrivning af 'Hej'. Compileren venter i 10 sekunder efter udskrivning af 'Hej' og udskriver derefter 'Verden'.
Bemærk: Læsere skal udføre dette program for faktisk at forstå funktionen af søvnkommandoen
Usleep () -funktion
Overskriften 'unistd.h' giver endnu en funktion 'usleep ()', der kan suspendere udførelsen af et program i en bestemt tidsperiode. Arbejdet svarer til sleep () -funktionen, der allerede er beskrevet.
Funktionsprototype: int usleep (useconds_t useconds);
Parametre: usekunder => Antal mikrosekunder, hvor eksekveringen er suspenderet
Returværdi:
0 => Usleep er vendt tilbage.
-1 & errno => Funktionen mislykkedes.
Beskrivelse:
Funktionen usleep () suspenderer udførelsen af opkaldstråd til usekunder mikrosekunder, eller indtil signalet leveres til tråden, der afbryder udførelsen.
Granulariteten af de timerværdier, der bruges i usleep-funktionen, kan være implementeringsspecifik. Hvis vi har brug for finere granularitet end den, der er specificeret af implementeringen, afrundes den aktuelle timerværdi op til den næste understøttede værdi.
Nedenfor er et eksempel for at demonstrere usleep () -funktionen.
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Produktion:
Hej Verden
Som vist i ovenstående output angiver vi tidsperioden som 10000 mikrosekunder for usleep-funktion, og ligesom det foregående program ved hjælp af sleep-funktion udskriver vi 'Hello World' -strengen.
Tråd Sleep (sleep_for & sleep_until)
C ++ 11 giver specifikke funktioner til at sætte en tråd i dvale.
Der er to funktioner:
Std :: this_thread :: sleep_for
Funktionsprototype:
template void sleep_for( const std::chrono::duration& sleep_duration );
Parametre: sleep_duration => Tidsvarighed til at sove
Returværdi: ingen
Beskrivelse: Funktionen sleep_for () er defineret i overskriften. Funktionen sleep_for () blokerer udførelsen af den aktuelle tråd mindst i det angivne tidspunkt, dvs. sleep_duration.
Denne funktion kan blokere i længere tid end et bestemt tidspunkt på grund af planlægningsaktiviteter eller ressourcekonfliktforsinkelser.
Et C ++ eksempel, der demonstrerer brugen af sleep_for, er vist nedenfor:
#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 jeg venter….
Ventede 2000 ms
I ovenstående program har vi en specificeret søvnvarighed på 20000 millisekunder. Dette betyder, at tråden blokerer i 20000 millisekunder, før operationen genoptages.
Std :: this_thread :: sleep_until
Funktionsprototype:
template void sleep_until( const std::chrono::time_point& sleep_time );
Parametre: sleep_time => Tidsvarighed, indtil tråden skal blokeres.
Returværdi: ingen
Beskrivelse: Denne funktion er defineret i overskriften. Funktionen sleep_until () blokerer udførelsen af en tråd, indtil sleep_time er forløbet. Ligesom de andre funktioner kan denne funktion muligvis også blokere i længere tid end et bestemt tidspunkt på grund af planlægningsaktiviteter eller ressourcekonfliktforsinkelser.
Et C ++ -program til sleep_until-funktion er angivet nedenfor.
#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:
Aktuel tid :: Thu Sep 19 12:52:01 2019
Sovende indtil :: Thu Sep 19 12:53:01 2019
Vågnede… Nuværende tid :: Thu Sep 19 12:53:01 2019
I dette program får vi tråden til at sove i 60 sekunder, dvs. 1 minut. Når 1 minut er afsluttet; tråd vågner op og udskriver det aktuelle tidspunkt.
Ofte stillede spørgsmål
Q # 1) Hvad gør søvn () i C ++?
Svar: Sleep () -funktionen suspenderer udførelsen af programmet i et bestemt tidsrum. Denne tidsperiode er specificeret som et argument for sleep () -funktionen.
Q # 2) Hvad er headerfilen til søvn i C ++?
Svar: Overskriften til søvn er “unistd.h” for LINUX / UNIX-operativsystemet og “Windows.h” for Windows-operativsystemet. Til trådsøvn, der bruger 'sleep_for' og 'sleep_until' funktioner, bruges header.
Q # 3) Hvad er brugen af #include Unistd H?
Svar: Overskriften 'Unistd.h' er den overskrift, der definerer sleep () -funktionen for at suspendere udførelsen af programmet.
Konklusion
I denne vejledning til sleep () -funktion har vi diskuteret sleep-funktionen og usleep () -funktionen, som er den samme som sleep- og thread-sleep-funktionerne, sleep_for og sleep_until. Sleep () og usleep () -funktionerne er ens bortset fra den tidsenhed, der bruges til at specificere søvntiden.
I sleep () -funktionen er tiden specificeret i sekunder, mens tiden i usleep () er specificeret i mikrosekunder. Trådfunktionerne sleep_for () suspenderer trådudførelsen i en bestemt tidsperiode, der er angivet som et argument. Den anden trådfunktion sleep_until () suspenderer udførelsen af tråden, indtil der er gået et bestemt tidspunkt.
Foreslået læsning = >> Hvad er trådtestning?
Det kan tage længere tid at vende tilbage til alle de diskuterede søvnfunktioner afhængigt af planlægning eller andre ressource-specifikke forsinkelser.
=> Læs gennem den populære C ++ træningsserie her.
Anbefalet læsning
- Pythons hovedfunktionsvejledning med praktiske eksempler
- Multithreading i C ++ med eksempler
- 10 Bedste gratis tidsurssoftware til medarbejderes tidssporing
- QTP-tutorial # 21 - Sådan oprettes QTP-tests modulært og genanvendeligt ved hjælp af handlinger og funktionsbiblioteker
- Funktioner i C ++ med typer og eksempler
- Unix Utilities-programmer Kommandoer: Hvilken, Man, Find Su, Sudo (del D)
- Deltids freelancing jobmulighed for seleneksperter
- 10 BEDSTE tidssporingsapps til freelancere (2021 SELECTIVE)