c sleep how use sleep function c programs
Questo tutorial sul sonno in C ++ discuterà la funzione Sleep in C ++ e vedrà come mettere un thread a dormire. Impareremo anche le altre funzioni vale a dire. dormi:
Qualsiasi programma per computer che è un processo, un'attività o un thread può 'dormire' o entrare in uno stato inattivo per un periodo di tempo specifico. L'esecuzione è sospesa, per questo periodo di tempo. L'esecuzione riprenderà quando l'intervallo di tempo del sonno scade o un segnale o un'interruzione fa riprendere l'esecuzione.
Per mettere in sleep un programma (task, processo o thread) utilizziamo una chiamata di sistema sleep. Una tipica chiamata di sistema sleep prende il tempo come parametro che indica quanto tempo il programma ha bisogno per dormire o rimanere inattivo.
=> Controlla qui la serie completa di formazione C ++.
Abbiamo anche le funzioni usleep () e thread :: sleep di cui parleremo in questo tutorial. Il tempo fornito è per lo più in millisecondi, microsecondi o secondi ea seconda di ciò abbiamo varie funzioni che possono mettere in stop il programma.
Cosa imparerai:
- Funzione Sleep ()
- Funzione Usleep ()
- Thread Sleep (sleep_for & sleep_until)
- Domande frequenti
- Conclusione
- Lettura consigliata
Funzione Sleep ()
Il linguaggio C ++ non fornisce una funzione di sospensione propria. Tuttavia, i file specifici del sistema operativo come unistd.h per Linux e Windows.h per Windows forniscono questa funzionalità.
Quando utilizziamo il sistema operativo Linux o UNIX, dobbiamo includere il file di intestazione 'unistd.h' nel nostro programma per utilizzare il dormire () funzione.
Durante l'utilizzo del sistema operativo Windows, dobbiamo includere l'intestazione 'Windows.h' per utilizzare la funzione sleep (). Quindi, per scrivere un programma multipiattaforma, possiamo avere il codice come mostrato di seguito in modo che venga utilizzata una delle intestazioni.
#ifdef _WIN32 #include #else #include #endif
La funzione sleep è descritta di seguito:
Prototipo di funzione:
sonno senza segno (secondi senza segno);
Parametri:
secondi => Periodo di tempo in secondi per il quale l'esecuzione del programma viene sospesa
Valore di ritorno:
0 => Se il sonno ritorna quando è trascorso il tempo richiesto.
Se il sonno viene interrotto da un segnale, viene restituita una quantità di inattività (periodo di tempo richiesto specificato meno il tempo effettivo trascorso).
Descrizione:
La funzione sleep () fa sì che il programma o il processo in cui viene chiamato sospenda temporaneamente la sua esecuzione per un periodo di tempo in secondi specificato dal parametro della funzione. L'esecuzione viene sospesa fino allo scadere del tempo richiesto o fino a quando non viene inviato un segnale o un interrupt alla funzione.
Tuttavia, se il sistema ha programmato altre attività, il tempo di sospensione potrebbe essere più lungo.
Di seguito è riportato un programma C ++ che utilizza la funzione sleep tra due istruzioni cout.
come creare un progetto in eclipse
#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; }
Produzione:
Ciao mondo
Nel programma sopra, diamo un comando sleep con un periodo di 10 secondi dopo aver stampato 'Hello'. Il compilatore attende 10 secondi dopo aver stampato 'Hello' e quindi stampa 'World'.
Nota: I lettori dovrebbero eseguire questo programma per comprendere effettivamente il funzionamento del comando sleep
Funzione Usleep ()
L'intestazione 'unistd.h' fornisce un'altra funzione 'usleep ()' che può sospendere l'esecuzione di un programma per un periodo di tempo specificato. Il funzionamento è simile alla funzione sleep () già descritta.
Prototipo di funzione: int usleep (useconds_t useconds);
Parametri: useconds => Numero di microsecondi per i quali l'esecuzione è sospesa
Valore di ritorno:
0 => Usleep è tornato con successo.
-1 & errno => Funzione fallita.
Descrizione:
La funzione usleep () sospende l'esecuzione del thread chiamante per usecondi microsecondi o fino a quando il segnale non viene consegnato al thread che interrompe l'esecuzione.
La granularità dei valori del timer utilizzati nella funzione usleep può essere specifica dell'implementazione. Se è necessaria una granularità più fine di quella specificata dall'implementazione, il valore effettivo del timer viene arrotondato al valore successivo supportato.
Di seguito è riportato un esempio per dimostrare la funzione usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Produzione:
Ciao mondo
Come mostrato nell'output sopra, specifichiamo il periodo di tempo come 10000 microsecondi per la funzione usleep e proprio come il programma precedente che utilizza la funzione sleep, stampiamo la stringa 'Hello World'.
Thread Sleep (sleep_for & sleep_until)
C ++ 11 fornisce funzioni specifiche per mettere in sleep un thread.
Ci sono due funzioni:
Std :: this_thread :: sleep_for
Prototipo di funzione:
template void sleep_for( const std::chrono::duration& sleep_duration );
Parametri: sleep_duration => Durata del tempo per dormire
Valore di ritorno: nessuna
Descrizione: La funzione sleep_for () è definita nell'intestazione. La funzione sleep_for () blocca l'esecuzione del thread corrente almeno per il tempo specificato, ovvero sleep_duration.
Questa funzione può bloccarsi per una durata superiore a quella specificata a causa di attività di pianificazione o ritardi di conflitto di risorse.
Di seguito viene fornito un esempio C ++ che dimostra l'utilizzo di 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
'; }
Produzione:
Ciao, sto aspettando ...
Atteso 2000 ms
Nel programma sopra, abbiamo una durata del sonno specificata di 20000 millisecondi. Ciò significa che il thread si bloccherà per 20000 millisecondi prima di riprendere l'operazione.
Std :: this_thread :: sleep_until
Prototipo di funzione:
template void sleep_until( const std::chrono::time_point& sleep_time );
Parametri: sleep_time => Durata del tempo fino al quale il thread deve essere bloccato.
Valore di ritorno: nessuna
Descrizione: Questa funzione è definita nell'intestazione. La funzione sleep_until () blocca l'esecuzione di un thread fino allo scadere del tempo sleep_time. Come le altre funzioni, anche questa funzione può bloccarsi per una durata maggiore di un tempo specificato a causa di attività di pianificazione o ritardi di conflitto di risorse.
Di seguito viene fornito un programma C ++ per la funzione 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; }
Produzione:
Ora corrente: gio 19 settembre 12:52:01 2019
Dormire fino al: Giovedì 19 settembre 12:53:01 2019
Mi sono svegliato ... Ora corrente: giovedì 19 settembre 12:53:01 2019
In questo programma, facciamo dormire il thread per 60 secondi, cioè 1 minuto. Una volta che 1 minuto è completo; il thread si sveglia e stampa l'ora corrente.
Domande frequenti
D # 1) Cosa fa sleep () in C ++?
Risposta: La funzione Sleep () sospende l'esecuzione del programma per un periodo di tempo specificato. Questo periodo di tempo è specificato come argomento della funzione sleep ().
D # 2) Qual è il file di intestazione per la sospensione in C ++?
Risposta: L'intestazione per la sospensione è 'unistd.h' per il sistema operativo LINUX / UNIX e 'Windows.h' per il sistema operativo Windows. Per il thread sleep che utilizza le funzioni 'sleep_for' e 'sleep_until', viene utilizzata l'intestazione.
D # 3) Qual è l'uso di #include Unistd H?
Risposta: L'intestazione 'Unistd.h' è l'intestazione che definisce la funzione sleep () per sospendere l'esecuzione del programma.
Conclusione
In questo tutorial per la funzione sleep (), abbiamo discusso la funzione sleep e la funzione usleep () che è la stessa delle funzioni sleep e thread sleep, sleep_for e sleep_until. Le funzioni Sleep () e usleep () sono le stesse tranne che per l'unità di tempo utilizzata per specificare il tempo di sospensione.
Nella funzione sleep (), il tempo è specificato in secondi, mentre nella funzione usleep (), il tempo è specificato in microsecondi. Le funzioni thread sleep_for () sospendono l'esecuzione del thread per un periodo di tempo specifico fornito come argomento. La seconda funzione thread sleep_until () sospende l'esecuzione del thread fino a quando non è trascorso un tempo specificato.
Lettura suggerita = >> Cos'è il thread test?
Il ripristino di tutte le funzioni di sospensione discusse potrebbe richiedere più tempo a seconda della pianificazione o di altri ritardi specifici delle risorse.
=> Leggi qui la popolare serie di formazione C ++.
Lettura consigliata
- Tutorial sulle funzioni principali di Python con esempi pratici
- Multithreading in C ++ con esempi
- I 10 migliori software gratuiti per il rilevamento del tempo dei dipendenti
- Tutorial QTP # 21 - Come rendere modulari e riutilizzabili i test QTP utilizzando azioni e librerie di funzioni
- Funzioni in C ++ con tipi ed esempi
- Comandi dei programmi di utilità Unix: Which, Man, Find Su, Sudo (Part D)
- Opportunità di lavoro freelance part-time per esperti di selenio
- 10 MIGLIORI app per il monitoraggio del tempo per liberi professionisti (SELETTIVO 2021)