Bonjour.

Dans mon application j'utilise des thread et je passe comme argument une structure.

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);
	}
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 ?