pThread passage argument normal
Bonjour.
Dans mon application j'utilise des thread et je passe comme argument une structure.
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
| // 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);
} |
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.
Comment puis-je régler ce problème ?