Bonjour je développes un programme qui utilise 2 threads différents j'arrive à les créer mais j'arrive pas à changer leur priorité.
Voici mon code :
Comme erreur au niveau des priorité il me retourne la valeur 22.
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
41
42
43
44
45
46
47
48 #include<stdio.h> #include<pthread.h> int i,cp,impulsion=0,retour; char temp[10]; pthread_t pthread_id; struct sched_param param; void * threadClient(void *arg) { for(;;) { impulsion++; } } int main() { retour=pthread_create(&pthread_id, NULL, threadClient, &impulsion); if(retour!=0) { sprintf(temp,"%i",retour); puts("erreur de creation du thread :"); puts(temp); } retour = pthread_setschedparam(pthread_id, SCHED_FIFO, ¶m); if(retour!=0) { sprintf(temp,"%i",retour); puts("erreur de priorite : "); puts(temp); } i=0; while (i!=-1) { if (cp==100000) { sprintf(temp,"%i",impulsion); puts(temp); cp=0; } else cp++; } return 0; }
or dans la doc il est écrit :
Et je vois pas trop a quel erreur ca peut se rapporter.En cas d'erreur, pthread_setschedparam renvoie l'un des codes d'erreurs suivants :
EINVAL
politique n'est pas parmi : SCHED_OTHER, SCHED_RR, SCHED_FIFO
EINVAL
la valeur de la priorité indiquée par param n'est pas valide pour la politique choisie.
EPERM
le thread appelant ne possède pas les droits du super-utilisateur.
ESRCH
target_thread n'est pas valide ou est déjà terminé.
EFAULT
param pointe en dehors de l'espace mémoire du processus.
Mais à mon avis ca doit etre un problème au niveau de param. Mais je vois pas quel valeur mettre. Dans la doc il est écrit :
ais le lien vers sched_setpolicy(2) n'existe plus et l i'nformation avant ne me dit pas clairement ce que je dois mettre à la place de param.param change les paramètres d'ordonnancement pour les deux politiques temps réel. Voir sched_setpolicy(2) pour plus d'information sur ces politiques.
Si qq'un peut m'aider ?
Merci d'avance
Partager