Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction thrd_sleep (C ISO 2011)

La fonction thrd_join Le type thrd_start_t


Entêtes à  inclure

#include <threads.h>

Fonction thrd_sleep

int thrd_sleep( const struct timespec* duration, struct timespec* remaining );

Cette fonction bloque le thread courant pendant un certain temps. La durée de pause se spécifie via une instance de type struct timespec. Mais le thread peut reprendre avant la fin du délai s'il recçoit un signal non ignoré. Dans ce cas, le temps restant, par rapport au temps de blocage initialement spécifié, sera stocké dans la zone de mémoire pointée par le second paramètre.

Paramètres

Valeur de retour

La fonction thrd_sleep renvoie la valeur thrd_success si l'attente du thread se passe correctement. Dans le cas contraire, elle renverra thrd_error.

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
#include <stdio.h>
#include <stdlib.h>
#include <threads.h>


int main() {

    // On fait une première étape
    printf( "First step\n" );
    
    // On attend 1 seconde
    thrd_sleep( &(struct timespec){.tv_sec=1}, NULL );

    // On fait une seconde étape
    printf( "Second step\n" );

    // On attend 500 milli-secondes (500 000 000 nano-secondes)
    thrd_sleep( &(struct timespec){.tv_nsec=500000000}, NULL );

    // On fait une dernière étape
    printf( "Last step\n" );

    return EXIT_SUCCESS;
}
Fichier sample.c : exemple de mise en pause du thread courant

Pour compiler cet exemple sous environnement Linux/Unix, il est nécessaire de lier la librairie pthread (Posix Thread) à votre exécutable. Voici un exemple de compilation.

$> gcc -o sample sample.c -lpthread
$>

Fonctions et types connexes

thrd_yield


La fonction thrd_join Le type thrd_start_t