c sleep how use sleep function c programs
Αυτό το φροντιστήριο C ++ Sleep θα συζητήσει τη Λειτουργία ύπνου στο C ++ και θα δείτε πώς να βάλετε ένα νήμα σε αναστολή λειτουργίας. Θα μάθουμε επίσης για τις άλλες λειτουργίες, δηλαδή. Κοιμάσαι:
Οποιοδήποτε πρόγραμμα υπολογιστή που είναι μια διαδικασία, μια εργασία ή ένα νήμα μπορεί να «αδράνει» ή να πάει σε ανενεργή κατάσταση για μια συγκεκριμένη ώρα. Η εκτέλεση αναστέλλεται για αυτό το χρονικό διάστημα. Η εκτέλεση θα συνεχιστεί ξανά όταν λήξει το χρονικό διάστημα ύπνου ή ένα σήμα ή διακοπή προκαλεί την επαναφορά της εκτέλεσης.
Για να θέσουμε ένα πρόγραμμα (εργασία, διαδικασία ή νήμα) σε αναστολή λειτουργίας, χρησιμοποιούμε μια κλήση συστήματος ύπνου. Μια τυπική κλήση συστήματος ύπνου παίρνει το χρόνο ως παράμετρος που υποδεικνύει τον χρόνο που χρειάζεται το πρόγραμμα για ύπνο ή παραμένει αδρανές.
=> Δείτε την ολοκληρωμένη σειρά προπόνησης C ++ εδώ.
Έχουμε επίσης λειτουργίες usleep () και thread :: sleep που θα συζητήσουμε σε αυτό το σεμινάριο. Ο χρόνος που παρέχεται είναι κυρίως σε χιλιοστά του δευτερολέπτου, μικροδευτερόλεπτα ή δευτερόλεπτα και εξαρτάται από το ότι έχουμε διάφορες λειτουργίες που μπορούν να θέσουν το πρόγραμμα σε αναστολή λειτουργίας.
Τι θα μάθετε:
- Λειτουργία Sleep ()
- Λειτουργία Usleep ()
- Νήμα ύπνου (sleep_for & sleep_until)
- Συχνές Ερωτήσεις
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Λειτουργία Sleep ()
Η γλώσσα C ++ δεν παρέχει δική της λειτουργία ύπνου. Ωστόσο, τα συγκεκριμένα αρχεία του λειτουργικού συστήματος, όπως unistd.h για Linux και Windows.h για Windows παρέχουν αυτήν τη λειτουργικότητα.
Όταν χρησιμοποιούμε το λειτουργικό σύστημα Linux ή UNIX, πρέπει να συμπεριλάβουμε το αρχείο κεφαλίδας 'unistd.h' στο πρόγραμμά μας για να χρησιμοποιήσουμε το ύπνος () λειτουργία.
Κατά τη χρήση του λειτουργικού συστήματος των Windows, πρέπει να συμπεριλάβουμε την κεφαλίδα 'Windows.h' για να χρησιμοποιήσουμε τη λειτουργία αναστολής (). Έτσι, για να γράψουμε ένα πρόγραμμα πολλαπλών πλατφορμών, μπορούμε να έχουμε τον κωδικό όπως φαίνεται παρακάτω, ώστε να χρησιμοποιηθεί οποιαδήποτε από τις κεφαλίδες.
#ifdef _WIN32 #include #else #include #endif
Η λειτουργία ύπνου περιγράφεται παρακάτω:
Πρωτότυπο λειτουργίας:
ύπνος χωρίς υπογραφή (δευτερόλεπτα χωρίς υπογραφή) ·
Παράμετροι:
δευτερόλεπτα => Χρονικό διάστημα σε δευτερόλεπτα για το οποίο η εκτέλεση του προγράμματος έχει ανασταλεί
Τιμή επιστροφής:
0 => Εάν ο ύπνος επιστρέψει όπως έχει παρέλθει ο απαιτούμενος χρόνος.
Εάν ο ύπνος διακόπτεται από ένα σήμα, επιστρέφεται ένα αδιάλειπτο ποσό (καθορισμένη χρονική περίοδος μείον τον πραγματικό χρόνο που έχει παρέλθει).
Περιγραφή:
Η συνάρτηση sleep () αναγκάζει το πρόγραμμα ή τη διαδικασία στην οποία καλείται, να αναστείλει προσωρινά την εκτέλεση του για μια χρονική περίοδο σε δευτερόλεπτα που καθορίζεται από την παράμετρο συνάρτησης. Η εκτέλεση αναστέλλεται έως ότου παρέλθει ο απαιτούμενος χρόνος ή ένα σήμα ή μια διακοπή παραδοθεί στη λειτουργία.
Ωστόσο, εάν το σύστημα έχει προγραμματίσει οποιαδήποτε άλλη δραστηριότητα, τότε ο χρόνος αναστολής ενδέχεται να είναι μεγαλύτερος.
Δίνεται παρακάτω ένα πρόγραμμα C ++ που χρησιμοποιεί τη λειτουργία αναστολής μεταξύ δύο δηλώσεων cout.
Το πακέτο λογισμικού που χρησιμοποιείται πιο συχνά για τη δημιουργία απλών γραφημάτων είναι
#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; }
Παραγωγή:
Γειά σου Κόσμε
Στο παραπάνω πρόγραμμα, δίνουμε μια εντολή ύπνου με περίοδο 10 δευτερολέπτων μετά την εκτύπωση 'Γεια'. Ο μεταγλωττιστής περιμένει 10 δευτερόλεπτα μετά την εκτύπωση 'Γεια' και στη συνέχεια εκτυπώνει το 'Κόσμος'.
Σημείωση: Οι αναγνώστες θα πρέπει να εκτελέσουν αυτό το πρόγραμμα για να κατανοήσουν πραγματικά τη λειτουργία της εντολής ύπνου
Λειτουργία Usleep ()
Η κεφαλίδα 'unistd.h' παρέχει μια ακόμη λειτουργία 'usleep ()' που μπορεί να αναστείλει την εκτέλεση ενός προγράμματος για μια καθορισμένη χρονική περίοδο. Η εργασία είναι παρόμοια με τη λειτουργία αναστολής () που περιγράφεται ήδη.
Πρωτότυπο λειτουργίας: int usleep (useconds_t useconds);
Παράμετροι: useconds => Αριθμός μικροδευτερολέπτων για τα οποία η εκτέλεση έχει ανασταλεί
Τιμή επιστροφής:
0 => Ο Usleep επέστρεψε με επιτυχία.
-1 & errno => Η λειτουργία απέτυχε.
Περιγραφή:
Η συνάρτηση usleep () αναστέλλει την εκτέλεση του νήματος κλήσης για δευτερόλεπτα μικροδευτερολέπτων ή έως ότου το σήμα παραδοθεί στο νήμα που διακόπτει την εκτέλεση.
Η λεπτομέρεια των τιμών του χρονοδιακόπτη που χρησιμοποιούνται στη συνάρτηση usleep μπορεί να είναι συγκεκριμένη για την εφαρμογή. Εάν χρειαζόμαστε λεπτότερη λεπτομέρεια από αυτήν που καθορίζεται από την εφαρμογή, τότε η πραγματική τιμή χρονοδιακόπτη στρογγυλοποιείται στην επόμενη υποστηριζόμενη τιμή.
Δίνεται παρακάτω ένα παράδειγμα για να δείξετε τη συνάρτηση usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Παραγωγή:
Γειά σου Κόσμε
Όπως φαίνεται στην παραπάνω έξοδο, καθορίζουμε τη χρονική περίοδο ως 10000 μικροδευτερόλεπτα για τη λειτουργία αναμονής και όπως το προηγούμενο πρόγραμμα που χρησιμοποιεί τη λειτουργία αναστολής, εκτυπώνουμε τη συμβολοσειρά 'Hello World'.
Νήμα ύπνου (sleep_for & sleep_until)
Το C ++ 11 παρέχει συγκεκριμένες λειτουργίες για να θέσει το νήμα σε αναστολή λειτουργίας.
Υπάρχουν δύο λειτουργίες:
Std :: this_thread :: sleep_for
Πρωτότυπο λειτουργίας:
template void sleep_for( const std::chrono::duration& sleep_duration );
Παράμετροι: sleep_duration => Διάρκεια ύπνου
Αξία επιστροφής: κανένας
Περιγραφή: Η συνάρτηση sleep_for () ορίζεται στην κεφαλίδα. Η συνάρτηση sleep_for () αποκλείει την εκτέλεση του τρέχοντος νήματος τουλάχιστον για τον καθορισμένο χρόνο, δηλαδή τη διάρκεια του ύπνου.
Αυτή η συνάρτηση ενδέχεται να μπλοκάρει για μεγαλύτερη διάρκεια από μια καθορισμένη ώρα λόγω προγραμματισμού δραστηριοτήτων ή καθυστερήσεων διαμάχης πόρων.
Ένα παράδειγμα C ++ που δείχνει τη χρήση του 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
'; }
Παραγωγή:
Γεια σας περιμένω….
Περίμενε 2000 ms
Στο παραπάνω πρόγραμμα, έχουμε καθορισμένη διάρκεια ύπνου 20000 χιλιοστά του δευτερολέπτου. Αυτό σημαίνει ότι το νήμα θα μπλοκάρει για 20000 χιλιοστά του δευτερολέπτου πριν συνεχίσει τη λειτουργία.
Std :: this_thread :: sleep_until
Πρωτότυπο λειτουργίας:
template void sleep_until( const std::chrono::time_point& sleep_time );
Παράμετροι: sleep_time => Διάρκεια ώρας έως ότου το νήμα πρόκειται να αποκλειστεί.
Αξία επιστροφής: κανένας
Περιγραφή: Αυτή η συνάρτηση ορίζεται στην κεφαλίδα. Η συνάρτηση sleep_until () αποκλείει την εκτέλεση ενός νήματος έως ότου παρέλθει ο χρόνος ύπνου. Όπως και οι άλλες λειτουργίες, αυτή η συνάρτηση μπορεί επίσης να μπλοκάρει για μεγαλύτερη διάρκεια από μια καθορισμένη ώρα λόγω των δραστηριοτήτων προγραμματισμού ή των καθυστερήσεων διαμάχης πόρων.
Παρακάτω δίνεται ένα πρόγραμμα C ++ για τη λειτουργία 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; }
Παραγωγή:
Τρέχουσα ώρα :: Πέμ 19 Σεπ 12:52:01 2019
Sleeping Μέχρι :: Πέμ 19 Σεπ 12:53:01 2019
Ξύπνησα… Τρέχουσα ώρα :: Πέμ 19 Σεπ 12:53:01 2019
Σε αυτό το πρόγραμμα, κάνουμε το νήμα να κοιμάται για 60 δευτερόλεπτα, δηλαδή 1 λεπτό. Μόλις ολοκληρωθεί το 1 λεπτό. το νήμα ξυπνά και εκτυπώνει την τρέχουσα ώρα.
Συχνές Ερωτήσεις
Q # 1) Τι κάνει ο ύπνος () στο C ++;
Απάντηση: Η λειτουργία Sleep () αναστέλλει την εκτέλεση του προγράμματος για μια καθορισμένη χρονική περίοδο. Αυτή η χρονική περίοδος καθορίζεται ως όρισμα για τη λειτουργία αναστολής ().
Q # 2) Ποιο είναι το αρχείο κεφαλίδας για αναστολή λειτουργίας στο C ++;
Απάντηση: Η κεφαλίδα για αναστολή λειτουργίας είναι 'unistd.h' για το λειτουργικό σύστημα LINUX / UNIX και 'Windows.h' για το λειτουργικό σύστημα των Windows. Για νήμα νήματος που χρησιμοποιεί τις λειτουργίες 'sleep_for' και 'sleep_until', χρησιμοποιείται κεφαλίδα.
Q # 3) Ποια είναι η χρήση του #include Unistd H;
Απάντηση: Η κεφαλίδα 'Unistd.h' είναι η κεφαλίδα που καθορίζει τη λειτουργία αναστολής () για την αναστολή της εκτέλεσης του προγράμματος.
συμπέρασμα
Σε αυτό το σεμινάριο για τη λειτουργία ύπνου (), έχουμε συζητήσει τη λειτουργία ύπνου και τη λειτουργία ύπνου () που είναι ίδια με τις λειτουργίες ύπνου και νήματος, ύπνου και για ύπνου. Οι λειτουργίες Sleep () και usleep () είναι ίδιες εκτός από τη μονάδα χρόνου που χρησιμοποιείται για τον καθορισμό του χρόνου ύπνου.
Στη λειτουργία αναστολής (), ο χρόνος καθορίζεται σε δευτερόλεπτα, ενώ στη λειτουργία αναστολής λειτουργίας (), ο χρόνος καθορίζεται σε μικροδευτερόλεπτα. Το νήμα λειτουργεί sleep_for () αναστέλλει την εκτέλεση του νήματος για μια συγκεκριμένη χρονική περίοδο που παρέχεται ως όρισμα. Η δεύτερη λειτουργία νήματος sleep_until () αναστέλλει την εκτέλεση του νήματος έως ότου παρέλθει ένας καθορισμένος χρόνος.
Προτεινόμενη ανάγνωση = >> Τι είναι η δοκιμή νημάτων;
Όλες οι λειτουργίες ύπνου που συζητήθηκαν ενδέχεται να χρειαστούν περισσότερο χρόνο για να επιστρέψουν, ανάλογα με τον προγραμματισμό ή άλλες καθυστερήσεις που αφορούν συγκεκριμένους πόρους.
=> Διαβάστε τη δημοφιλή σειρά εκπαιδευτικών C ++ εδώ.
Συνιστώμενη ανάγνωση
- Εκπαιδευτικό πρόγραμμα Python Main Function με πρακτικά παραδείγματα
- Multithreading σε C ++ με παραδείγματα
- 10 καλύτερο λογισμικό ρολογιού ελεύθερου χρόνου για παρακολούθηση χρόνου εργαζομένων
- Tutorial QTP # 21 - Πώς να κάνετε τις δοκιμές QTP Modular και επαναχρησιμοποιήσιμες χρησιμοποιώντας βιβλιοθήκες ενεργειών και λειτουργιών
- Λειτουργίες σε C ++ με τύπους & παραδείγματα
- Εντολές προγραμμάτων Unix Utilities: Which, Man, Find Su, Sudo (Part D)
- Ευκαιρία εργασίας μερικής απασχόλησης για ειδικούς σεληνίου
- 10 καλύτερες εφαρμογές παρακολούθησης χρόνου για ελεύθερους επαγγελματίες (2021 SELECTIVE)