c sleep how use sleep function c programs
W tym samouczku uśpienia C ++ omówimy funkcję uśpienia w C ++ i zobaczę, jak uśpić wątek. Dowiemy się również o innych funkcjach, a mianowicie. śpisz:
Każdy program komputerowy będący procesem, zadaniem lub wątkiem może „uśpić” lub przejść w stan nieaktywny na określony czas. Na ten czas wykonanie zostaje zawieszone. Wykonywanie zostanie wznowione, gdy upłynie przedział czasu uśpienia lub sygnał lub przerwanie spowoduje wznowienie wykonywania.
Aby uśpić program (zadanie, proces lub wątek), używamy wywołania systemowego uśpienia. Typowe wywołanie systemowe uśpienia zajmuje czas jako parametr wskazujący, ile czasu program potrzebuje, aby spać lub pozostać nieaktywnym.
=> Sprawdź całą serię szkoleń C ++ tutaj.
Mamy również funkcje usleep () i thread :: sleep, które omówimy w tym samouczku. Podany czas jest przeważnie w milisekundach, mikrosekundach lub sekundach iw zależności od tego mamy różne funkcje, które mogą uśpić program.
Czego się nauczysz:
- Funkcja uśpienia ()
- Funkcja usleep ()
- Uśpienie wątku (sleep_for & sleep_until)
- Często Zadawane Pytania
- Wniosek
- rekomendowane lektury
Funkcja uśpienia ()
Język C ++ nie zapewnia własnej funkcji uśpienia. Jednak specyficzne pliki systemu operacyjnego, takie jak unistd.h dla systemu Linux i Windows.h dla systemu Windows zapewniają tę funkcję.
Kiedy używamy systemu operacyjnego Linux lub UNIX, musimy dołączyć plik nagłówkowy „unistd.h” do naszego programu, aby użyć sen () funkcjonować.
Korzystając z systemu operacyjnego Windows, musimy dołączyć nagłówek „Windows.h”, aby użyć funkcji sleep (). Tak więc, aby napisać program wieloplatformowy, możemy mieć kod pokazany poniżej, aby użyty został dowolny z nagłówków.
#ifdef _WIN32 #include #else #include #endif
Funkcja spania została opisana poniżej:
Prototyp funkcji:
stan uśpienia bez znaku (sekundy bez znaku);
Parametry:
sekundy => Okres w sekundach, przez który wykonywanie programu jest zawieszone
Wartość zwracana:
0 => Jeśli sen powróci po upływie żądanego czasu.
Jeśli sen zostanie przerwany przez sygnał, to zwracana jest niewyspana ilość (określony żądany okres minus rzeczywisty czas, który upłynął).
Opis:
Funkcja sleep () powoduje, że program lub proces, w którym jest wywoływana, wstrzymuje czasowo jego wykonywanie na czas w sekundach określony przez parametr funkcji. Wykonywanie jest zawieszane do czasu upłynięcia żądanego czasu lub dostarczenia sygnału lub przerwania do funkcji.
Jeśli jednak system zaplanował jakąkolwiek inną aktywność, czas zawieszenia może być dłuższy.
Poniżej podano program w C ++, który używa funkcji sleep między dwiema instrukcjami cout.
dlaczego brama domyślna jest niedostępna
#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; }
Wynik:
Witaj świecie
W powyższym programie wydajemy komendę uśpienia z okresem 10 sekund po wypisaniu „Hello”. Kompilator czeka 10 sekund po wydrukowaniu „Hello”, a następnie drukuje „World”.
Uwaga: Czytelnicy powinni uruchomić ten program, aby faktycznie zrozumieć działanie polecenia uśpienia
Funkcja usleep ()
Nagłówek „unistd.h” udostępnia kolejną funkcję „usleep ()”, która może zawiesić wykonywanie programu na określony czas. Działa podobnie do opisanej już funkcji sleep ().
Prototyp funkcji: int usleep (useconds_t useconds);
Parametry: useconds => Liczba mikrosekund, na które wykonanie jest zawieszone
Wartość zwracana:
0 => Usleep powrócił pomyślnie.
-1 & errno => Funkcja nie powiodła się.
Opis:
Funkcja usleep () zawiesza wykonywanie wywołującego wątku na useconds mikrosekund lub do momentu dostarczenia sygnału do wątku, który przerywa wykonanie.
Ziarnistość wartości liczników czasu używanych w funkcji usleep może być specyficzna dla implementacji. Jeśli potrzebujemy dokładniejszej szczegółowości niż określona przez implementację, rzeczywista wartość licznika czasu jest zaokrąglana w górę do następnej obsługiwanej wartości.
Poniżej podano przykład ilustrujący funkcję usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Wynik:
Witaj świecie
Jak pokazano na powyższym wyjściu, okres czasu określamy jako 10000 mikrosekund dla funkcji usleep i podobnie jak w poprzednim programie używającym funkcji uśpienia, drukujemy ciąg „Hello World”.
Uśpienie wątku (sleep_for & sleep_until)
C ++ 11 zapewnia określone funkcje do uśpienia wątku.
Istnieją dwie funkcje:
Std :: this_thread :: sleep_for
Prototyp funkcji:
template void sleep_for( const std::chrono::duration& sleep_duration );
Parametry: sleep_duration => Czas snu
Wartość zwracana: Żaden
Opis: Funkcja sleep_for () jest zdefiniowana w nagłówku. Funkcja sleep_for () blokuje wykonanie bieżącego wątku co najmniej przez określony czas, tj. Sleep_duration.
Ta funkcja może blokować się na dłużej niż określony czas z powodu działań związanych z planowaniem lub opóźnień związanych z rywalizacją o zasoby.
Przykład C ++ demonstrujący użycie sleep_for jest podany poniżej:
#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
'; }
Wynik:
Witam, czekam….
Czekałem 2000 ms
W powyższym programie mamy określony czas snu wynoszący 20000 milisekund. Oznacza to, że wątek zostanie zablokowany na 20000 milisekund przed wznowieniem operacji.
Std :: this_thread :: sleep_until
Prototyp funkcji:
template void sleep_until( const std::chrono::time_point& sleep_time );
Parametry: sleep_time => Czas, do którego wątek ma być blokowany.
Wartość zwracana: Żaden
Opis: Ta funkcja jest zdefiniowana w nagłówku. Funkcja sleep_until () blokuje wykonanie wątku do czasu upływu czasu sleep_time. Podobnie jak inne funkcje, ta funkcja może również blokować na czas dłuższy niż określony czas z powodu działań planowania lub opóźnień związanych z rywalizacją o zasoby.
Program w C ++ dla funkcji sleep_until jest podany poniżej.
#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; }
Wynik:
Aktualny czas :: czw 19 wrz 12:52:01 2019
Spanie do: Czw 19 września 12:53:01 2019
Obudziłem się… Bieżąca godzina: czw. 19 września 12:53:01 2019
W tym programie usypiamy nić na 60 sekund, czyli 1 minutę. Po upływie 1 minuty; wątek budzi się i wyświetla aktualny czas.
Często Zadawane Pytania
Pytanie 1) Co robi sleep () w C ++?
Odpowiedź: Funkcja Sleep () zawiesza wykonywanie programu na określony czas. Ten okres jest określony jako argument funkcji sleep ().
P # 2) Jaki jest plik nagłówkowy dla trybu uśpienia w C ++?
Odpowiedź: Nagłówek uśpienia to „unistd.h” dla systemu operacyjnego LINUX / UNIX i „Windows.h” dla systemu operacyjnego Windows. W przypadku snu wątku używającego funkcji „sleep_for” i „sleep_until” używany jest nagłówek.
P # 3) Jakie jest zastosowanie #include Unistd H?
Odpowiedź: Nagłówek „Unistd.h” to nagłówek definiujący funkcję sleep () w celu zawieszenia wykonywania programu.
Wniosek
W tym samouczku funkcji sleep () omówiliśmy funkcję sleep i funkcję usleep (), która jest taka sama jak funkcje sleep i thread sleep, sleep_for i sleep_until. Funkcje Sleep () i usleep () są takie same, z wyjątkiem jednostki czasu używanej do określenia czasu uśpienia.
W funkcji sleep () czas podawany jest w sekundach, natomiast w funkcji usleep () w mikrosekundach. Funkcje wątku sleep_for () wstrzymują wykonywanie wątku na określony czas podany jako argument. Druga funkcja wątku sleep_until () zawiesza wykonywanie wątku do momentu, gdy upłynie określony czas.
Sugerowana lektura = >> Co to jest testowanie wątków?
Wszystkie omówione funkcje uśpienia mogą zająć więcej czasu, aby powrócić w zależności od planowania lub innych opóźnień specyficznych dla zasobów.
=> Przeczytaj popularne serie szkoleń C ++ tutaj.
rekomendowane lektury
- Samouczek dotyczący głównych funkcji języka Python z praktycznymi przykładami
- Wielowątkowość w C ++ z przykładami
- 10 najlepszych darmowych programów do śledzenia czasu pracowników
- Samouczek QTP nr 21 - Jak uczynić testy QTP modułowymi i wielokrotnego użytku za pomocą akcji i bibliotek funkcji
- Funkcje w C ++ z typami i przykładami
- Polecenia programów narzędziowych Unix: Which, Man, Find Su, Sudo (część D)
- Możliwość pracy w niepełnym wymiarze godzin jako freelancer dla ekspertów Selenium
- 10 NAJLEPSZYCH aplikacji do śledzenia czasu dla freelancerów (2021 SELECTIVE)