La pagina man per nice
dice "bello() aggiunge inc al bel valore per il processo che chiama Quindi, possiamo utilizzarlo per modificare il valore bello per un thread creato da pthread_create
è bello() utilizzato per modificare la priorità del thread o la priorità del processo?
EDIT:.? Sembra che possiamo impostare il valore per thread
Ho scritto un'applicazione, impostando un valore diverso per thread diversi e osservato che il thread "più bello" è stato programmato con priorità più bassa. trovato che la stringa "alta priorità ................" viene emessa più frequentemente
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);
}
Ma perché in alcune implementazioni JVM, la priorità del thread java ha un mapping 1: 1 con il valore piacevole? //www.javamex.com/tutorials/threads/priority_what.shtml Inoltre, ho scritto un'applicazione, impostando un buon valore di differenza per thread diversi e osservato che il thread più bello è stato programmato con priorità più bassa verificando la frequenza dell'output. – pierrotlefou
@pierr, interessante, risulta che sia i thread NPTL che quelli Linux violano POSIX.1. Aggiornerò la mia risposta –
@ FrédéricHamidi È sempre lo stesso caso in cui i thread su Linux non condividono un buon valore comune? – blueskin