Heim  >  Artikel  >  Backend-Entwicklung  >  Wie unterbreche ich die Programmausführung in C mithilfe von Schlaffunktionen?

Wie unterbreche ich die Programmausführung in C mithilfe von Schlaffunktionen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 03:31:30834Durchsuche

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 angegebene Dauer. Um es zu verwenden, müssen Sie die folgenden Header einfügen:

<code class="cpp">#include <chrono>
#include <thread></code>

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

<code class="cpp">void sleep_for(const std::chrono::duration& timespan);</code>

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

<code class="cpp">std::chrono::milliseconds timespan(111605);</code>

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

<code class="cpp">std::this_thread::sleep_for(timespan);</code>

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 fehlte der Sprache die Thread-Funktionalität und Schlaffähigkeiten. Folglich war die Lösung zur Aussetzung der Ausführung plattformabhängig. Für Windows oder Unix hätten Sie sich vielleicht auf so etwas verlassen können:

<code class="cpp">#ifdef _WIN32
    #include <windows.h>
    
    void sleep(unsigned milliseconds)
    {
        Sleep(milliseconds);
    }
#else
    #include <unistd.h>
    
    void sleep(unsigned milliseconds)
    {
        usleep(milliseconds * 1000); // takes microseconds
    }
#endif</code>

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

Das obige ist der detaillierte Inhalt vonWie unterbreche ich die Programmausführung in C mithilfe von Schlaffunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn