#include <threads.h>
thrd_t thrd_create();
Cette fonction permet de récupérer l'identifiant du thread courant (celui appelant cette fonction).
Aucun paramètre.
La fonction thrd_current
renvoie l'identifiant du thread, de type thrd_t
, exécutant l'appel à cette fonction.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#include <stdio.h> #include <stdlib.h> #include <threads.h> thrd_t mainThread; void aFunction() { thrd_t currentThread = thrd_current(); if ( thrd_equal( currentThread, mainThread ) ) { printf( "Hello du thread principal\n" ); } else { printf( "Hello de l'autre thread\n" ); } } // La fonction sur laquelle va démarrer notre thread int threadMain( void * data ) { aFunction(); return thrd_success; } int main() { // On récupère l'identifiant du thread principal // (celui qui démarre sur la fonction main. mainThread = thrd_current(); // On crée un thread. thrd_t myThread; if ( thrd_create( &myThread, threadMain, NULL ) != thrd_success ) { fprintf( stderr, "Cannot create thread\n" ); return EXIT_FAILURE; } // Le thread principal appel la fonction aFunction aFunction(); // On attent la fin d'exécution du thread int threadResultCode; if ( thrd_join( myThread, &threadResultCode ) == thrd_error ) { fprintf( stderr, "Impossible d'attendre le thread\n" ); return EXIT_FAILURE; } // On sort du programme. printf( "Le thread initial/principal s'arrête.\n" ); return EXIT_SUCCESS; } |
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 $>
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 :