Namespaces
Variants

thrd_sleep

From cppreference.net
Défini dans l'en-tête <threads.h>
int thrd_sleep ( const struct timespec * duration,
struct timespec * remaining ) ;
(depuis C11)

Bloque l'exécution du thread actuel pendant au moins jusqu'à ce que la durée basée sur TIME_UTC pointée par duration se soit écoulée.

Le sommeil peut reprendre plus tôt si un signal non ignoré est reçu. Dans ce cas, si remaining n'est pas NULL , la durée restante est stockée dans l'objet pointé par remaining .

Table des matières

Paramètres

duration - pointeur vers la durée de suspension
remaining - pointeur vers l'objet pour stocker le temps restant en cas d'interruption. Peut être NULL , auquel cas il est ignoré

Valeur de retour

0 en cas de mise en veille réussie, - 1 si un signal s'est produit, autre valeur négative en cas d'erreur.

Notes

duration et remaining peuvent pointer vers le même objet, ce qui simplifie la réexécution de la fonction après un signal.

Le temps de veille réel peut être plus long que demandé car il est arrondi à la granularité du minuteur et en raison des frais généraux de planification et de commutation de contexte.

L'équivalent POSIX de cette fonction est nanosleep .

Exemple

#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)}));
}

Sortie :

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

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.26.5.7 La fonction thrd_sleep (p : 281)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.26.5.7 La fonction thrd_sleep (p: 385)

Voir aussi

cède la tranche de temps actuelle
(fonction)
Documentation C++ pour sleep_for