Bonjour,

Dans une application threadé, j'ai un code qui ressemble à celui-ci:

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
void* mafctthread(void *arg) {
 
MaStruct* mastruct = (MaStruct*)arg;
 
printf("Voila ma structure:\n");
structure_afficher(mastruct);
 
return NULL;
}
 
int main() {
 
MaStruct mastruct1, mastruct2;
 
...
 
pthread_create(&threadid1, NULL, mafcttrhread, &mastruct1); // Appel par thread
mafctthread(&mastruct2); // Appel dans fil d'exécution
 
}
Ainsi la fonction est exécutée deux fois en parallèle.
Le soucis, c'est que afficher la structure prends un certain temps.
Et donc, l'affichage est souvent "emmelé" entre les printf de la fonction dans le thread et celui dans le programme principal.

Comment faire pour qu'un thread monopolise la ressource ?
Par exemple, il faudrait faire quelque chose comme ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
void* mafctthread(void *arg) {
 
MaStruct* mastruct = (MaStruct*)arg;
 
bloquer(); // A partir de maintenant le thread à la main sur tt les autres
 
printf("Voila ma structure:\n");
structure_afficher(mastruct);
 
debloquer(); // Fin de la prioritée
 
return NULL;
}
Merci.