Namespaces
Variants

thrd_sleep

From cppreference.net
Definiert im Header <threads.h>
int thrd_sleep ( const struct timespec * duration,
struct timespec * remaining ) ;
(seit C11)

Blockiert die Ausführung des aktuellen Threads für mindestens die Dauer, auf die duration zeigt, basierend auf TIME_UTC , bis diese abgelaufen ist.

Der Sleep kann früher fortgesetzt werden, wenn ein Signal empfangen wird, das nicht ignoriert wird. In diesem Fall wird, falls remaining nicht NULL ist, die verbleibende Zeitdauer in das Objekt gespeichert, auf das remaining zeigt.

Inhaltsverzeichnis

Parameter

duration - Zeiger auf die Dauer für den Sleep-Vorgang
remaining - Zeiger auf das Objekt für die verbleibende Zeit bei Unterbrechung. Kann NULL sein, in diesem Fall wird es ignoriert

Rückgabewert

0 bei erfolgreichem Sleep, - 1 falls ein Signal aufgetreten ist, anderer negativer Wert bei einem Fehler.

Hinweise

duration und remaining können auf dasselbe Objekt zeigen, was das erneute Ausführen der Funktion nach einem Signal vereinfacht.

Die tatsächliche Schlafzeit kann länger sein als angefordert, da sie auf die Timer-Granularität aufgerundet wird und aufgrund von Scheduling- und Kontextwechsel-Overhead.

Das POSIX-Äquivalent dieser Funktion ist nanosleep .

Beispiel

#include <threads.h>
#include <time.h>
#include <stdio.h>
int main(void)
{
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
    thrd_sleep(&(struct timespec){.tv_sec=1}, NULL); // sleep 1 sec
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
}

Ausgabe:

Time: Mon Feb  2 16:18:41 2015
Time: Mon Feb  2 16:18:42 2015

Referenzen

  • C17-Standard (ISO/IEC 9899:2018):
  • 7.26.5.7 Die thrd_sleep-Funktion (S: 281)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.26.5.7 Die thrd_sleep-Funktion (S: 385)

Siehe auch

gibt die aktuelle Zeitscheibe ab
(Funktion)
C++-Dokumentation für sleep_for