La página del manual para nice
dice "agradable() añade inc al valor agradable para el proceso llamando Por lo tanto, podemos usarlo para cambiar el valor agradable para un hilo creado por pthread_create
es bueno() usado para cambiar la prioridad del hilo o la prioridad del proceso?
EDIT:.? Parece que podemos establecer el buen valor por hilo.
Escribí una aplicación, estableciendo diferentes valores agradables para diferentes hilos, y observé que el hilo "más bonito" se había programado con menor prioridad. encontró que la cadena "alta prioridad ................" sale más frecuentemente.
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);
}
Pero, ¿por qué en alguna implementación de JVM, la prioridad de subprocesos de Java tiene un mapeo 1: 1 con el buen valor? //www.javamex.com/tutorials/threads/priority_whatshtml Además, escribí una aplicación, estableciendo una diferencia de buen valor para diferentes subprocesos, y observé que el subproceso más agradable se ha programado con menor prioridad comprobando la frecuencia de la salida. – pierrotlefou
@pierr, interesante, resulta que ambos hilos NPTL y Linux violan POSIX.1. Actualizaré mi respuesta. –
@ FrédéricHamidi ¿Sigue siendo el mismo caso que los hilos en Linux no comparten un buen valor común? – blueskin