c sleep how use sleep function c programs
En aquest tutorial de C ++ Sleep es parlarà de la funció Sleep en C ++ i es veurà com dormir un fil. També coneixerem les altres funcions, a saber. dormir:
Qualsevol programa d'ordinador que sigui un procés, una tasca o un fil pot 'dormir' o passar a un estat inactiu durant un temps concret. L'execució queda suspesa durant aquest període de temps. L'execució es reprendrà quan caduqui l'interval de temps de son o un senyal o interrupció faci que es reprengui l'execució.
Per posar en suspens un programa (tasca, procés o fil) fem servir una trucada al sistema de repòs. Una trucada típica al sistema de repòs pren el temps com a paràmetre que indica quant de temps necessita el programa per dormir o romandre inactiu.
=> Consulteu aquí la sèrie completa de formació C ++.
També tenim funcions usleep () i thread :: sleep que parlarem en aquest tutorial. El temps proporcionat és majoritàriament en mil·lisegons, microsegons o segons i, segons això, tenim diverses funcions que poden fer dormir el programa.
Què aprendreu:
- Funció Sleep ()
- Funció Usleep ()
- Fil de son (sleep_for & sleep_until)
- Preguntes freqüents
- Conclusió
- Lectura recomanada
Funció Sleep ()
El llenguatge C ++ no proporciona una funció de son pròpia. Tanmateix, els fitxers específics del sistema operatiu, com ara unistd.h per a Linux i Windows.h per a Windows proporcionen aquesta funcionalitat.
Quan fem servir el sistema operatiu Linux o UNIX, hem d’incloure el fitxer de capçalera “unistd.h” al nostre programa per utilitzar el dormir () funció.
Mentre fem servir el sistema operatiu Windows, hem d’incloure la capçalera “Windows.h” per utilitzar la funció sleep (). Per tant, per escriure un programa multiplataforma, podem tenir el codi tal com es mostra a continuació, de manera que s’utilitzarà qualsevol de les capçaleres.
#ifdef _WIN32 #include #else #include #endif
A continuació es descriu la funció de son:
Prototip de funció:
son sense signar (segons sense signar);
Paràmetres:
segons => Període de temps en segons durant el qual es suspèn l'execució del programa
Valor de retorn:
0 => Si torna el son a mesura que ha transcorregut el temps sol·licitat.
Si el senyal s'interromp per dormir, es retorna una quantitat inesperada (període de temps sol·licitat especificat menys el temps real transcorregut).
Descripció:
La funció sleep () fa que el programa o el procés en què es crida, suspengui la seva execució temporalment durant un període de temps en segons especificat pel paràmetre de funció. L'execució es suspèn fins que transcorri el temps sol·licitat o es lliura un senyal o una interrupció a la funció.
Tot i això, si el sistema ha programat qualsevol altra activitat, el temps de suspensió pot ser més llarg.
A continuació es mostra un programa C ++ que utilitza la funció de repòs entre dues sentències cout.
preguntes i respostes d’entrevistes per a analistes de negocis
#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; }
Sortida:
Hola món
Al programa anterior, donem una ordre de suspensió amb un període de 10 segons després d'imprimir 'Hola'. El compilador espera 10 segons després d’imprimir “Hola” i després imprimeix el “Món”.
Nota: Els lectors haurien d’executar aquest programa per entendre realment el funcionament de l’ordre sleep
Funció Usleep ()
La capçalera 'unistd.h' proporciona una altra funció 'usleep ()' que pot suspendre l'execució d'un programa durant un període de temps especificat. El funcionament és similar a la funció sleep () ja descrita.
Prototip de funció: int usleep (useconds_t useconds);
Paràmetres: segons segons => Nombre de microsegons per als quals s'ha suspès l'execució
Valor de retorn:
0 => Usleep ha tornat amb èxit.
-1 & errno => La funció ha fallat.
Descripció:
La funció usleep () suspèn l'execució del fil de trucada per microsegons d'usuari o fins que el senyal es lliura al fil que interromp l'execució.
La granularitat dels valors del temporitzador que s’utilitzen a la funció d’utilitat poden ser específics de la implementació. Si necessitem una granularitat més fina que l’especificada per la implementació, el valor del temporitzador real s’arrodonirà al següent valor admès.
A continuació es mostra un exemple per demostrar la funció usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Sortida:
Hola món
Com es mostra a la sortida anterior, especifiquem el període de temps com a 10000 microsegons per a la funció inactiva i, igual que el programa anterior que utilitzava la funció de suspensió, imprimim la cadena 'Hello World'.
Fil de son (sleep_for & sleep_until)
C ++ 11 proporciona funcions específiques per dormir un fil.
Hi ha dues funcions:
Std :: this_thread :: sleep_for
Prototip de funció:
template void sleep_for( const std::chrono::duration& sleep_duration );
Paràmetres: sleep_duration => Durada del temps per dormir
Valor de retorn: cap
Descripció: La funció sleep_for () es defineix a la capçalera. La funció sleep_for () bloqueja l'execució del fil actual almenys durant el temps especificat, és a dir, sleep_duration.
Aquesta funció es pot bloquejar durant més temps que un temps especificat a causa de la programació d'activitats o retards en la contenció de recursos.
A continuació es mostra un exemple de C ++ que demostra l’ús de 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
'; }
Sortida:
Hola, estic esperant ...
Esperat 2000 ms
Al programa anterior, tenim una durada de son especificada de 20.000 mil·lisegons. Això significa que el fil es bloquejarà durant 20.000 mil·lisegons abans de reprendre l'operació.
Std :: this_thread :: sleep_fins
Prototip de funció:
template void sleep_until( const std::chrono::time_point& sleep_time );
Paràmetres: sleep_time => Durada del temps fins al qual s'ha de bloquejar el fil.
Valor de retorn: cap
Descripció: Aquesta funció es defineix a la capçalera. La funció sleep_until () bloqueja l'execució d'un fil fins que transcorri el sleep_time. Igual que la resta de funcions, aquesta funció també es pot bloquejar durant més temps que un temps especificat a causa de les activitats de planificació o retards en la contenció de recursos.
A continuació es mostra un programa C ++ per a la funció 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; }
Sortida:
Hora actual :: Dij 19 Set, 12:52:01 2019
Dormint fins: dij. 19 set. 12:53:01 2019
Vaig despertar ... Hora actual :: Dij 19 Set 12:53:01 2019
En aquest programa, fem dormir el fil durant 60 segons, és a dir, 1 minut. Un cop completat 1 minut; el fil es desperta i imprimeix l’hora actual.
Preguntes freqüents
P # 1) Què fa dormir () a C ++?
Resposta: La funció Sleep () suspèn l'execució del programa durant un període de temps especificat. Aquest període de temps s'especifica com a argument per a la funció sleep ().
P # 2) Quin és el fitxer de capçalera per dormir en C ++?
Resposta: La capçalera per dormir és 'unistd.h' per al sistema operatiu LINUX / UNIX i 'Windows.h' per al sistema operatiu Windows. Per a la funció de son de fil que utilitza funcions 'sleep_for' i 'sleep_until', s'utilitza la capçalera.
P # 3) Per a què serveix #include Unistd H?
Resposta: La capçalera ‘Unistd.h’ és la capçalera que defineix la funció sleep () per suspendre l’execució del programa.
Conclusió
En aquest tutorial per a la funció sleep (), hem parlat de la funció sleep i la funció usleep () que és la mateixa que les funcions sleep i thread, sleep_for i sleep_fins. Les funcions Sleep () i usleep () són les mateixes, tret de la unitat de temps que s’utilitza per especificar el temps de son.
A la funció sleep (), el temps s’especifica en segons, mentre que a la funció usleep (), el temps s’especifica en microsegons. Les funcions del fil sleep_for () suspèn l'execució del fil durant un període de temps específic proporcionat com a argument. La segona funció de fil sleep_until () suspèn l'execució del fil fins que hagi transcorregut un temps especificat.
Lectura suggerida = >> Què és la prova de fils?
Totes les funcions de son comentades poden trigar més a tornar, segons la programació o altres retards específics de recursos.
=> Llegiu aquí la popular sèrie de formació C ++.
Lectura recomanada
- Tutorial de funcions principals de Python amb exemples pràctics
- Multithreading en C ++ amb exemples
- 10 millors programes de rellotge de temps lliure per al seguiment del temps dels empleats
- Tutorial QTP # 21 - Com fer que les proves QTP siguin modulars i reutilitzables mitjançant accions i biblioteques de funcions
- Funcions en C ++ amb tipus i exemples
- Comandes de programes d'utilitat Unix: Quin, home, troba Su, Sudo (part D)
- Oportunitat de treball autònom a temps parcial per a experts en seleni
- 10 MILLORS aplicacions de seguiment de temps per a autònoms (2021 SELECTIVE)