Page principale   Modules   Liste des composants   Liste des fichiers   Composants   Déclarations  

Interface de gestion de threads
[Interface PHIL]

Ce module définit comment créer des threads, terminer un thread ou un programme concurrent et connaitre le thread courant. Plus de détails...

Définitions des types

typedef void *(* PhilRunnable )(void *)
 Le type d'une procédure exécutable par un thread.

typedef PhilThreadDesc * PhilThread
 L'identité d'un thread est un pointeur sur son descripteur.


Fonctions

PhilThread PhilThreadCreate (int type, int priority, int stacksize, PhilRunnable start_routine, void *arg)
 Création d'un thread.

int PhilThreadJoin (PhilThread th, void **return_val)
 Joindre un thread.

void PhilThreadExit (void *return_val)
 Terminer le thread courant.

PhilThread PhilThreadCurrent ()
 Obtenir l'identité du thread courant.

void PhilThreadYield ()
 Passer la main à un autre thread.


Description détaillée

Pour savoir comment l'utiliser, voir Un exemple d'utilisation : le sémaphore Les N philosophes

Documentation de la fonction

PhilThread PhilThreadCreate int    type,
int    priority,
int    stacksize,
PhilRunnable    start_routine,
void *    arg
 

Paramètres:
type  le thread est joignable 0 ou détaché 1
priority  >=0 définit la priorité du thread créé. 0 est la priorité maximum.
stacksize  taille de pile demandée
start_routine  procédure initiale du thread
arg  paramètre initial
Renvoie :
l'identité du thread ou 0 si echec de création
Un thread détaché ne peut être joint. Il est ignoré lors de la détection de terminaison qui ne prend en compte que les threads joignables.

PhilThread PhilThreadCurrent  
 

Renvoie :
identité du thread courant

void PhilThreadExit void *    return_val
 

Paramètres:
return_val  adresse de la valeur résultat.

int PhilThreadJoin PhilThread    th,
void **    return_val
 

Paramètres:
th  le thread joint
return_val  où mettre l'adresse du résultat du thread joint. Si 0, le résultat est ignoré.
Renvoie :
un code d'erreur :
  • 0 OK
  • 1 le thread joint est inexistant
Un thread détaché ne peut être join. Il est ignoré lors de la détection de terminaison qui ne prend en compte que les threads joignables.

void PhilThreadYield  
 

Le passage de main ne peut se faire qu'au sein de threads de même priorité ou de priorités supérieures au thread courant.


Généré le Thu Jan 15 15:49:02 2004 par doxygen1.2.17