typedef struct List{ struct List *next; int val; } *Liste; Liste li; pthread_mutex_t mut; void *consume(void *p){ int ret; Liste temp; while(any){ ret=pthread_mutex_lock(&mut); if(li!=NULL){ temp=li->next; free(li); li=temp; } ret=pthread_mutex_unlock(&mut); } } void *produce(void *p){ int ret; Liste temp; while(any){ ret=pthread_mutex_lock(&mut); temp=malloc(sizeof(struct List)); temp->next=li; temp->val=1; li->next=temp; ret=pthread_mutex_unlock(&mut); } } int main(){ pthread_t th1; pthread_t th2; int ret; ret=pthread_mutex_init(&mut,NULL); ret=pthread_create(&th1,NULL,consume,NULL); ret=pthread_create(&th2,NULL,produce,NULL); ret=pthread_join(th1,NULL); ret=pthread_join(th2,NULL); }