Bonjour.
Dans mon application j'utilise des thread et je passe comme argument une structure.
Je récupère les donnée depuis mon thread mais comme cela est un pointeur et que les donnée change a chaque lancement de thread dans la boucle, je récupère sur chaque les donnée du dernier lancement.
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 // Création de la structure de base struct thread_data info; info.distFile = Downloader::distFile; info.file = Downloader::file; info.hebergeur = Downloader::hebergeur; info.localFile = localFile; info.URL = URL; info.startLength = 0; // Emplacement de commencement info.downloadLength = 0; // Taille a télécharger // Récupérer taille fichier Downloader::getLengthFile(); info.lengthFile = Downloader::lengthFile; // Crée le nombre de thread nécessaire pthread_t *threads; threads = (pthread_t*) malloc( sizeof(pthread_t) * nbThread ); int quant = Downloader::lengthFile / nbThread; int x= 0; for(int i = 0 ; i < nbThread ; i++) { info.startLength = x; // Emplacement de commencement info.downloadLength = quant; // Taille a télécharger x += quant; pthread_create(&threads[i], NULL, DownloadeThread, (void *)&info); }
Comment puis-je régler ce problème ?
Partager