est gentil () utilisé pour changer la priorité de fil ou la priorité de processus?
La page de man pour nice
dit "nice() ajoute inc à la valeur de nice pour la processus appelant. Ainsi, pouvons-nous l'utiliser pour modifier la valeur de nice pour un thread créé par pthread_create
?
EDIT:
Il semble que nous ne pouvons définir la valeur de nice par thread.
J'ai écrit une application ,la mise en différents nice valeur pour les différents thread, et a observé que le "plus agréable" le fil a été programmé avec une priorité basse. La vérification de la sortie, j'ai trouvé que la chaîne "haute priorité ................" obtenez de sortir plus souvent.
void * thread_function1(void *arg)
{
pid_t tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, -10);
printf("tid of high priority thread %d , %d\n",tid ,getpriority(PRIO_PROCESS,tid));
while(1){
printf("high priority ................\n");
}
}
void * thread_function(void *arg)
{
pid_t tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, 10);
printf("tid of low priority thread %d , %d \n",tid ,getpriority(PRIO_PROCESS,tid));
while(1)
{
printf("lower priority\n");
}
}
int main()
{
pthread_t id1;
pthread_t id2;
pid_t pid = getpid();
pid_t tid = syscall(SYS_gettid);
printf("main thread : pid = %d , tid = %d \n" , pid, tid);
pthread_create(&id1, NULL, thread_function1, NULL);
pthread_create(&id2, NULL,thread_function, NULL);
pthread_join(id1, NULL);
pthread_join(id2, NULL);
}
source d'informationauteur pierrotlefou
Vous devez vous connecter pour publier un commentaire.
La pthreads page de man dit:
Donc, théoriquement, la "gentillesse" valeur globale du processus et partagée par tous les threads, et vous ne devriez pas être en mesure de définir un la gentillesse pour un ou plusieurs threads individuels.
Cependant, le même homme cette page a également dit:
Ainsi, il s'avère que les deux threading implémentations sur Linux (LinuxThreads et NPTL) en fait violer POSIX.1, et vous pouvez régler un la gentillesse pour un ou plusieurs threads individuels par le passage d'un
tid
à setpriority() sur ces systèmes.