et j'ai oublie le malloc
La, pour ceux que ca interesse, vla une implementation d'une liste circulaire sans gestion de la queue, avec uniquement la tete, sans gestion du nb d'element, et qui marche ( j'viens d'taistai), meme avec des threads bossant dessus (mutex power).
Code :
- typedef struct element
- {
- int t; // <== vous mettez ce que vous voulez ici
- struct element *prev;
- }element;
- typedef struct
- {
- element* head;
- pthread_mutex_t mutex;
- }c_list;
- void add(int i, c_list* c)
- {
- element* el;
- el = (element*)malloc(sizeof(element));
- el->t = i;
- pthread_mutex_lock(&(c->mutex));
- if(c->head == NULL)
- {
- c->head = el;
- (c->head)->prev = c->head;
- }
- else
- {
- el->prev = (c->head)->prev;
- (c->head)->prev = el;
- c->head = el;
- }
- pthread_mutex_unlock(&(c->mutex));
- }
- int* take(c_list *c)
- {
- element *former_tail;
- pthread_mutex_lock(&(c->mutex));
- if(c->head == NULL)
- return NULL;
- former_tail = (c->head)->prev;
- (c->head)->prev = former_tail->prev;
- pthread_mutex_unlock(&(c->mutex));
- return &(former_tail->t);
- }
|
OK, y a beaucoup de parentheses, mais c'est pour mieux me relire par la suite ( ca m'aide bcp et ca coute STRICTEMENT rien ).
---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !