Bonjour,
Dans une application threadé, j'ai un code qui ressemble à celui-ci:
Ainsi la fonction est exécutée deux fois en parallèle.
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 }
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:
Merci.
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; }
Partager