problème de priorité des threads
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 :
Code:
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;
} |
Comme erreur au niveau des priorité il me retourne la valeur 22.
or dans la doc il est écrit :
Citation:
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.
Et je vois pas trop a quel erreur ca peut se rapporter.
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 :
Citation:
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.
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.
Si qq'un peut m'aider ?
Merci d'avance