c sleep how use sleep function c programs
Tento tutoriál o spánku v C ++ sa bude zaoberať funkciou spánku v C ++ a zistí, ako uspať vlákno. Dozvieme sa tiež o ďalších funkciách, viď. usleep:
Akýkoľvek počítačový program, ktorý je procesom, úlohou alebo vláknom, môže určitý čas „spať“ alebo prejsť do neaktívneho stavu. Exekúcia je na toto časové obdobie pozastavená. Spustenie sa obnoví, keď vyprší časový interval spánku alebo signál alebo prerušenie spôsobí pokračovanie spustenia.
Na uvedenie programu (úlohy, procesu alebo vlákna) do režimu spánku používame systémové volanie spánku. Typické systémové volanie v režime spánku trvá určitý čas ako parameter, ktorý udáva, koľko času program potrebuje na spánok alebo na nečinnosť.
=> Kompletnú sériu školení v C ++ nájdete tu.
Máme tiež funkcie usleep () a thread :: sleep, o ktorých si povieme v tomto tutoriále. Poskytovaný čas je väčšinou v milisekundách, mikrosekundách alebo sekundách a podľa toho máme rôzne funkcie, ktoré program môžu uspať.
Čo sa dozviete:
- Funkcia spánku ()
- Funkcia Usleep ()
- Thread Sleep (sleep_for & sleep_until)
- často kladené otázky
- Záver
- Odporúčané čítanie
Funkcia spánku ()
Jazyk C ++ neposkytuje vlastnú funkciu spánku. Konkrétne súbory operačného systému však majú rady unistd.h pre Linux a Windows.h pre Windows poskytujú túto funkcionalitu.
Keď používame operačný systém Linux alebo UNIX, musíme do nášho programu zahrnúť hlavičkový súbor „unistd.h“, aby sme mohli používať spánok () funkcie.
Pri používaní operačného systému Windows musíme na použitie funkcie sleep () zahrnúť hlavičku „Windows.h“. Aby sme teda mohli napísať program pre rôzne platformy, môžeme mať kód, ako je uvedené nižšie, aby bolo možné použiť ktorékoľvek z hlavičiek.
#ifdef _WIN32 #include #else #include #endif
Funkcia spánku je popísaná nižšie:
Funkčný prototyp:
nepodpísaný spánok (nepodpísané sekundy);
Parametre:
sekúnd => Časové obdobie, v ktorom je pozastavené vykonávanie programu
Návratová hodnota:
0 => Ak sa spánok vráti po uplynutí požadovaného času.
Ak je spánok prerušený signálom, vráti sa nespaná suma (zadané požadované časové obdobie mínus skutočný čas).
Popis:
Funkcia sleep () spôsobí, že program alebo proces, v ktorom je volaný, dočasne pozastaví jeho vykonávanie na čas v sekundách určený parametrom funkcie. Vykonávanie je pozastavené, kým neuplynie požadovaný čas alebo kým nie je funkcii doručený signál alebo prerušenie.
Ak však systém naplánoval inú činnosť, môže byť čas pozastavenia dlhší.
Ďalej je uvedený program v C ++, ktorý využíva funkciu spánku medzi dvoma príkazmi cout.
ktorý z nich je jedným z najpopulárnejších testovacích rámcov?
#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; }
Výkon:
Ahoj svet
Vo vyššie uvedenom programe dávame príkaz na spánok s 10 sekundovým intervalom po vytlačení „Ahoj“. Kompilátor počká po vytlačení „Ahoj“ 10 sekúnd a potom vytlačí „Svet“.
Poznámka: Čitatelia by mali tento program vykonať, aby skutočne pochopili fungovanie príkazu spánok
Funkcia Usleep ()
Hlavička „unistd.h“ poskytuje ešte ďalšiu funkciu „usleep ()“, ktorá môže na určitý čas pozastaviť vykonávanie programu. Fungovanie je podobné funkcii sleep (), ktorá už bola opísaná.
Funkčný prototyp: int usleep (useconds_t useconds);
Parametre: useconds => Počet mikrosekúnd, na ktoré je vykonávanie pozastavené
Návratová hodnota:
0 => Usleep sa úspešne vrátil.
-1 & errno => Funkcia zlyhala.
Popis:
Funkcia usleep () pozastaví vykonávanie volajúceho vlákna na sekundy mikrosekundy alebo dovtedy, kým sa do vlákna, ktoré prerušuje vykonávanie, nedostane signál.
Granularita časovaných hodnôt použitých vo funkcii usleep môže byť špecifická pre implementáciu. Ak potrebujeme jemnejšiu zrnitosť, ako je špecifikovaná v implementácii, potom sa skutočná hodnota časovača zaokrúhli nahor na ďalšiu podporovanú hodnotu.
Ďalej je uvedený príklad na demonštráciu funkcie usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Výkon:
Ahoj svet
Ako je znázornené vo vyššie uvedenom výstupe, pre funkciu usleep určujeme časové obdobie ako 10 000 mikrosekúnd a rovnako ako v predchádzajúcom programe používajúcom funkciu spánku vytlačíme reťazec „Hello World“.
Thread Sleep (sleep_for & sleep_until)
C ++ 11 poskytuje špecifické funkcie na uvedenie vlákna do režimu spánku.
Existujú dve funkcie:
Std :: this_thread :: sleep_for
Funkčný prototyp:
template void sleep_for( const std::chrono::duration& sleep_duration );
Parametre: sleep_duration => Čas potrebný na spánok
Návratová hodnota: žiadny
Popis: Funkcia sleep_for () je definovaná v hlavičke. Funkcia sleep_for () blokuje vykonávanie aktuálneho vlákna najmenej na zadaný čas, tj. Sleep_duration.
Táto funkcia môže byť blokovaná na dlhšie trvanie ako je určený čas z dôvodu plánovania aktivít alebo oneskorenia sporov o prostriedky.
Nižšie je uvedený príklad v C ++ demonštrujúci použitie sleep_for:
#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
'; }
Výkon:
Ahoj čakám ...
Čakalo 2 000 ms
Vo vyššie uvedenom programe máme zadanú dobu spánku 20000 milisekúnd. To znamená, že vlákno sa pred obnovením činnosti zablokuje na 20 000 milisekúnd.
Std :: this_thread :: sleep_until
Funkčný prototyp:
template void sleep_until( const std::chrono::time_point& sleep_time );
Parametre: sleep_time => Čas, do ktorého má byť vlákno blokované.
Návratová hodnota: žiadny
Popis: Táto funkcia je definovaná v hlavičke. Funkcia sleep_until () blokuje vykonávanie vlákna, kým neuplynie sleep_time. Rovnako ako ostatné funkcie, aj táto funkcia môže blokovať na dlhšie trvanie ako je zadaný čas z dôvodu plánovania aktivít alebo oneskorenia sporov o zdroje.
Program C ++ pre funkciu sleep_until je uvedený nižšie.
#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; }
Výkon:
Aktuálny čas :: Št 19. sep 12:52:01 2019
Spíme do :: Št 19. september 12:53:01 2019
Prebudil sa ... Aktuálny čas :: Št 19. september 12:53:01 2019
V tomto programe uspávame vlákno na 60 sekúnd, tj. 1 minútu. Po uplynutí 1 minúty; vlákno sa prebudí a vytlačí aktuálny čas.
často kladené otázky
Otázka č. 1) Čo robí režim sleep () v C ++?
Odpoveď: Funkcia spánku () pozastaví vykonávanie programu na zadané časové obdobie. Toto časové obdobie je špecifikované ako argument pre funkciu sleep ().
Otázka č. 2) Čo je hlavičkový súbor pre spánok v C ++?
Odpoveď: Hlavička pre spánok je „unistd.h“ pre operačný systém LINUX / UNIX a „Windows.h“ pre operačný systém Windows. Pre vlákno spánok, ktoré používa funkcie ‘sleep_for’ a ‘sleep_until’, sa používa hlavička.
Otázka č. 3) Na čo sa používa #include Unistd H?
Odpoveď: Hlavička ‘Unistd.h’ je hlavička, ktorá definuje funkciu sleep () na pozastavenie vykonávania programu.
Záver
V tomto výučbe funkcie sleep () sme diskutovali o funkciách spánku a usleep (), ktoré sú rovnaké ako funkcie spánku a vlákien spánku, sleep_for a sleep_until. Funkcie Sleep () a usleep () sú rovnaké, s výnimkou časovej jednotky použitej na určenie času spánku.
Vo funkcii sleep () je čas zadaný v sekundách, zatiaľ čo vo funkcii usleep () je čas zadaný v mikrosekundách. Funkcie vlákna sleep_for () pozastavia vykonávanie vlákna na konkrétne časové obdobie poskytnuté ako argument. Druhá funkcia vlákna sleep_until () pozastaví vykonávanie vlákna až do uplynutia stanoveného času.
Navrhované čítanie = >> Čo je to testovanie vlákna?
Vrátenie všetkých diskutovaných funkcií spánku môže trvať dlhšie, v závislosti od plánovania alebo iných oneskorení špecifických pre zdroj.
=> Prečítajte si populárnu sériu školení C ++ tu.
Odporúčané čítanie
- Výukový program pre hlavné funkcie Pythonu s praktickými príkladmi
- Multithreading v C ++ s príkladmi
- 10 najlepších softvérov na sledovanie voľného času pre sledovanie času zamestnancov
- Výukový program QTP # 21 - Ako vytvoriť modulárne a opakovane použiteľné testy QTP pomocou knižníc akcií a funkcií
- Funkcie v C ++, typy a príklady
- Príkazy obslužných programov Unixu: Which, Man, Find Su, Sudo (Part D)
- Pracovná príležitosť na voľnej nohe na čiastočný úväzok pre odborníkov na selén
- 10 NAJLEPŠÍCH aplikácií na sledovanie času pre nezávislých pracovníkov (2021 SELECTIVE)