c sleep how use sleep function c programs
V tomto výukovém programu C ++ spánku se budeme zabývat funkcí spánku v C ++ a zjistíme, jak uvést vlákno do režimu spánku. Dozvíme se také o dalších funkcích viz. usleep:
Jakýkoli počítačový program, který je procesem, úkolem nebo vláknem, může po určitou dobu „usnout“ nebo přejít do neaktivního stavu. Exekuce je na tuto dobu pozastavena. Provádění bude obnoveno zpět, když vyprší časový interval spánku nebo signál nebo přerušení způsobí obnovení provádění.
K uspání programu (úkolu, procesu nebo vlákna) používáme systémové volání spánku. Typické systémové volání režimu spánku vyžaduje čas jako parametr, který udává, kolik času program potřebuje ke spánku nebo k nečinnosti.
=> Podívejte se na kompletní sérii školení C ++ zde.
Máme také funkce usleep () a thread :: sleep, o kterých budeme diskutovat v tomto tutoriálu. Poskytovaný čas je většinou v milisekundách, mikrosekundách nebo sekundách a podle toho máme různé funkce, které mohou program usnout.
Co se naučíte:
- Funkce spánku ()
- Funkce Usleep ()
- Thread Sleep (sleep_for & sleep_until)
- Často kladené otázky
- Závěr
- Doporučené čtení
Funkce spánku ()
Jazyk C ++ neposkytuje vlastní funkci spánku. Specifické soubory operačního systému se však líbí unistd.h pro Linux a Windows.h pro Windows poskytují tuto funkci.
Když používáme operační systém Linux nebo UNIX, musíme do našeho programu zahrnout záhlaví „unistd.h“, abychom mohli použít spánek () funkce.
Při používání operačního systému Windows musíme k použití funkce sleep () zahrnout záhlaví „Windows.h“. Abychom mohli napsat program pro různé platformy, můžeme mít kód, jak je znázorněno níže, takže bude použita některá ze záhlaví.
#ifdef _WIN32 #include #else #include #endif
Funkce spánku je popsána níže:
Funkční prototyp:
nepodepsaný spánek (nepodepsané sekundy);
Parametry:
sekund => Časové období v sekundách, po které je pozastaveno provádění programu
Návratová hodnota:
0 => Pokud se spánek vrátí po uplynutí požadovaného času.
Pokud je spánek přerušen signálem, je vrácena nezaspaná částka (zadané požadované časové období minus skutečný uplynulý čas).
Popis:
Funkce sleep () způsobí, že program nebo proces, ve kterém je volán, dočasně pozastaví jeho provádění na dobu v sekundách určenou parametrem funkce. Provádění je pozastaveno, dokud neuplyne požadovaný čas nebo není do funkce doručen signál nebo přerušení.
Pokud však systém naplánoval jakoukoli jinou aktivitu, může být doba pozastavení delší.
Níže je uveden program C ++, který používá funkci spánku mezi dvěma příkazy cout.
nejlepší bezplatné odstranění malwaru pro Windows 7
#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ýstup:
Ahoj světe
Ve výše uvedeném programu dáváme příkaz spánku s periodou 10 sekund po vytištění „Hello“. Kompilátor po vytištění „Hello“ počká 10 sekund a poté vytiskne „World“.
Poznámka: Čtenáři by měli tento program spustit, aby skutečně porozuměli fungování příkazu spánku
Funkce Usleep ()
Záhlaví „unistd.h“ poskytuje ještě další funkci „usleep ()“, která může na určitou dobu pozastavit provádění programu. Práce je podobná již popsané funkci sleep ().
Funkční prototyp: int usleep (useconds_t useconds);
Parametry: useconds => Počet mikrosekund, na které je provádění pozastaveno
Návratová hodnota:
0 => Usleep se úspěšně vrátil.
-1 & errno => Funkce selhala.
Popis:
Funkce usleep () pozastavuje provádění volajícího vlákna na mikrosekundy useconds nebo do doby, než je signál doručen do vlákna, které provádění přerušuje.
Granularity hodnot časovače použitých ve funkci usleep mohou být specifické pro implementaci. Pokud potřebujeme jemnější zrnitost, než je specifikována implementací, pak se skutečná hodnota časovače zaokrouhlí nahoru na další podporovanou hodnotu.
Níže je uveden příklad demonstrace funkce usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Výstup:
Ahoj světe
Jak je znázorněno ve výše uvedeném výstupu, určíme časové období jako 10 000 mikrosekund pro funkci usleep a stejně jako u předchozího programu používajícího funkci spánku vytiskneme řetězec „Hello World“.
Thread Sleep (sleep_for & sleep_until)
C ++ 11 poskytuje specifické funkce pro uspání vlákna.
Existují dvě funkce:
Std :: this_thread :: sleep_for
Funkční prototyp:
template void sleep_for( const std::chrono::duration& sleep_duration );
Parametry: sleep_duration => Doba do spánku
Návratová hodnota: žádný
Popis: Funkce sleep_for () je definována v záhlaví. Funkce sleep_for () blokuje provádění aktuálního vlákna alespoň po stanovenou dobu, tj. Sleep_duration.
Tato funkce může blokovat po delší dobu, než je zadaná doba, kvůli plánovacím aktivitám nebo zpožděním sporu o prostředky.
Níže je uveden příklad C ++, který ukazuje použití 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ýstup:
Ahoj, čekám ...
Čekal 2 000 ms
Ve výše uvedeném programu máme zadanou dobu spánku 20000 milisekund. To znamená, že vlákno bude blokováno po dobu 20 000 milisekund před obnovením operace.
Std :: this_thread :: sleep_until
Funkční prototyp:
template void sleep_until( const std::chrono::time_point& sleep_time );
Parametry: sleep_time => Doba trvání, do které má být vlákno blokováno.
Návratová hodnota: žádný
Popis: Tato funkce je definována v záhlaví. Funkce sleep_until () blokuje provádění vlákna, dokud neuplyne sleep_time. Stejně jako ostatní funkce může i tato funkce blokovat po delší dobu, než je zadaná doba, kvůli naplánovaným aktivitám nebo zpožděním sporu o prostředky.
Níže je uveden program C ++ pro funkci sleep_until.
#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ýstup:
Aktuální čas :: Čt 19. září 12:52:01 2019
Spací do :: Čt 19. září 12:53:01 2019
Probudil se ... Aktuální čas :: Čt 19. září 12:53:01 2019
V tomto programu necháme vlákno spát po dobu 60 sekund, tj. 1 minutu. Po dokončení 1 minuty; vlákno se probudí a vytiskne aktuální čas.
Často kladené otázky
Otázka č. 1) Co dělá sleep () v C ++?
Odpovědět: Funkce spánku () pozastaví provádění programu na zadanou dobu. Toto časové období je zadáno jako argument funkce sleep ().
Otázka č. 2) Co je soubor záhlaví pro spánek v C ++?
Odpovědět: Záhlaví pro režim spánku je „unistd.h“ pro operační systém LINUX / UNIX a „Windows.h“ pro operační systém Windows. Pro podproces spánku, který používá funkce „sleep_for“ a „sleep_until“, se používá záhlaví.
Otázka č. 3) Jaké je použití #include Unistd H?
Odpovědět: Záhlaví „Unistd.h“ je záhlaví, které definuje funkci sleep () k pozastavení provádění programu.
Závěr
V tomto výukovém programu pro funkci sleep () jsme diskutovali o funkci spánku a funkci usleep (), která je stejná jako funkce spánku a podprocesu spánku, sleep_for a sleep_until. Funkce spánku () a usleep () jsou stejné, kromě časové jednotky použité k určení doby spánku.
Ve funkci sleep () je čas zadán v sekundách, zatímco ve funkci usleep () je čas zadán v mikrosekundách. Funkce podprocesu sleep_for () pozastaví provádění podprocesu pro konkrétní časové období poskytované jako argument. Funkce druhého vlákna sleep_until () pozastaví provádění vlákna, dokud neuplyne zadaný čas.
Doporučené čtení = >> Co je testování vláken?
Všechny diskutované funkce spánku mohou trvat déle, než se vrátí v závislosti na plánování nebo jiných zpožděních specifických pro zdroj.
=> Přečtěte si zde populární sérii školení C ++.
Doporučené čtení
- Výukový program pro hlavní funkce Pythonu s praktickými příklady
- Vícevláknové zpracování v C ++ s příklady
- 10 nejlepších softwaru pro hodiny volného času pro sledování času zaměstnanců
- Výukový program QTP č. 21 - Jak vytvořit modulární a opakovaně použitelné testy QTP pomocí knihoven akcí a funkcí
- Funkce v C ++ s typy a příklady
- Příkazy unixových obslužných programů: Which, Man, Find Su, Sudo (Part D)
- Nabídka pracovních míst na volné noze pro odborníky na selen
- 10 NEJLEPŠÍCH aplikací pro sledování času pro nezávislé pracovníky (2021 VÝBĚRNÉ)