pthread_setspecific && _getspecific
Bonsoir,
J'ai voulu utiliser les fonctions pthread_setspecific() et pthread_getspecific() afin de pouvoir transférer des données d'un thread à un autre, mais je n'arrive pas à les utiliser, je crée deux thread, l'un dans lequel je place les données avec pthread_setspecific() et l'autre dans lequel je tente de les récupérer, seulement il me retourne toujours 0..
Code:
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
| #include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
void * fonction (void * arg);
pthread_key_t key;
int main(){
pthread_t pth;
int i;
pthread_key_create(& key, free);
for(i = 0; i < 2; i++){
if(pthread_create(& pth, NULL, fonction, (void *) i) != 0){
perror("pthread_create");
exit(EXIT_FAILURE);
}
}
/* Processus père */
while(1) sleep(1);
}
void * fonction(void * arg){
int i = (int)arg;
int j = 4;
int data;
switch(i){
case 0:
while(1){
pthread_setspecific(key, j);
sleep(1);
}
break;
case 1:
while(1){
data = (int)pthread_getspecific(key);
printf("data = %d\n", data);
sleep(1);
}
break;
}
pthread_exit(NULL);
} |
En utilisant pthread_getspecific() dans le même thread que celui ou j'utilise pthread_setspecific(), ca marche sans problème, mais je vois plus tellement l'intérêt..