Bonjour à tous,
Je viens de voir les threads en C. J'ai lancé 2 threads, dont l'un écrivait sur le terminal la lettre A, puis le second la lettre B. J'avais donc un mélange sur le terminal de A et B ce qui est logique. Je souhaite maintenant gérer des priorités avec cet exemple pour m'entrainer à gérer les threads. Ainsi le résultat voulu doit etre que des lettres A, puis que des lettres B sur le terminal. Mais je n'arrive pas en gérant la variable sched_priority à modifier le thread qui doit etre prioritaire.
Dans mon code le thread t1 qui dit A, est prioritaire par rapport au thread qui dit B. mais si je change la priorité :
c'est toujours le thread t1 qui affiche son texte en premier. alors que j'aimerais que ce soit t2 qui soit prioritaire. Avez vous une idée du pourquoi?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sched1.sched_priority = 2; //decide des priorités 1>2 sched2.sched_priority = 1;
voici mon code:
Merci d'avance pour votre aide
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
32
33
34
35
36
37
38
39
40 void* DireB(){ for (int i = 0; i < 2000; ++i) { printf("B\n"); } } void* DireA(){ for (int i = 0; i < 2000; ++i) { printf("A\n"); } } int main(){ pthread_attr_t attr1,attr2; //attributs pour gérer les priorités struct sched_param sched1,sched2; //gestionnaire de priorité sched1.sched_priority = 1; //decide des priorités 1>2 sched2.sched_priority = 2; pthread_t t1,t2; pthread_attr_init(&attr1); //initialise les attributs par défauts pthread_attr_init(&attr2); sched_setscheduler(0, SCHED_RR, &sched1); //on instancie les gestionnaires sched_setscheduler(0, SCHED_RR, &sched2); pthread_attr_setschedparam(&attr1,&sched1); //on initialise les attributs en fonction des gestionnaires pthread_attr_setschedparam(&attr2,&sched2); pthread_create(&t1, &attr1, DireA, NULL); //on lance les threads pthread_create(&t2, &attr2, DireB, NULL); pthread_join(t1,NULL); pthread_join(t2,NULL); return 0; }
Partager