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..
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..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Partager