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.
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.
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.
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