„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie unterbreche ich die Programmausführung in C++ mithilfe von Sleep-Funktionen?

Wie unterbreche ich die Programmausführung in C++ mithilfe von Sleep-Funktionen?

Veröffentlicht am 31.10.2024
Durchsuche:466

How to Pause Program Execution in C   using Sleep Functions?

Auf der Suche nach einer Schlaffunktion in C

Um den Programmausführungsfluss zu steuern, müssen Sie das Programm möglicherweise für eine bestimmte Dauer anhalten. In C gibt es kein direktes Äquivalent zur in anderen Sprachen häufig verwendeten Sleep(time)-Funktion. Die C-Standardbibliothek bietet jedoch eine praktikable Alternative.

Wir stellen vor: std::this_thread::sleep_for

Die C-Standardbibliothek bietet die Funktion std::this_thread::sleep_for, mit der Sie Folgendes tun können Unterbricht die Ausführung des aktuellen Threads für eine bestimmte Dauer. Um es zu verwenden, müssen Sie die folgenden Header einfügen:

#include 
#include 

Die Syntax von std::this_thread::sleep_for lautet wie folgt:

void sleep_for(const std::chrono::duration& timespan);

Wobei timespan ein std::chrono::duration-Objekt ist, das die Dauer des Schlafs angibt. Um eine millisekundenbasierte std::chrono::duration zu erstellen, verwenden Sie den std::chrono::milliseconds-Konstruktor:

std::chrono::milliseconds timespan(111605);

Mit diesen Komponenten können Sie die Ausführung Ihres Programms für die gewünschte Zeit anhalten Intervall:

std::this_thread::sleep_for(timespan);

Beachten Sie, dass std::this_thread::sleep_until als ergänzende Funktion für eine präzise zeitbasierte Synchronisierung dient.

Legacy-Schlafoptionen (vor C 11)

Vor der Einführung von C 11 fehlten der Sprache Thread-Funktionalität und Ruhefunktionen. Folglich war die Lösung zur Aussetzung der Ausführung plattformabhängig. Für Windows oder Unix haben Sie sich möglicherweise auf Folgendes verlassen:

#ifdef _WIN32
    #include 
    
    void sleep(unsigned milliseconds)
    {
        Sleep(milliseconds);
    }
#else
    #include 
    
    void sleep(unsigned milliseconds)
    {
        usleep(milliseconds * 1000); // takes microseconds
    }
#endif

Alternativ hätten Sie die Implementierung mit boost::this_thread::sleep der Boost-Bibliothek vereinfachen können.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729677484 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3