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 : 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, &param);
	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 :
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 :
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