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
|
//1ere solution (la naïve)
pthread_t tab[N]; //Avec N assez grand (pas forcément le cas et en plus c'est généralement une perte mémoire)
//2eme solution (plus sympa mais plus de boulot)
/*
On déclare une structure contenant un pointeur
En créant deux trois fonctions qui vérifie s'il y a encore de place on peut:
- Pour récupérer un indice c'est un parcours de tableau et s'il faut une nouvelle case et si jamais il n'y a plus de place on crée un tableau plus grand et on recopie les anciennes valeurs
- Facilement libérer la mémoire
*/
typedef struct sThreadsID
pthread_t *tab; //Alloué dynamiquement, la taille courante se trouve dans taille
int taille;
}ThreadsID;
//3eme solution (la plus économique côté mémoire et la plus dynamique)
/* Il faut faire les fonctions de gestion d'une liste chaînée (un bon exercice)
Par contre recherche d'un identifiant peut être long
*/
typedef struct sThreadNoeud
{
pthread id;
struct sThreadNoeud* next;
}ThreadNoeud; |