Strona man dla nice
mówi „nice() dodaje inc do wartości nice dla procesu wywołującego Tak, możemy użyć go, aby zmienić wartość nice dla wątku stworzonego przez pthread_create
jest ładne() używane do zmiany priorytetu wątku lub priorytetu procesu?
EDIT:.? Wygląda na to, że możemy ustawić ładną wartość na wątek:
Napisałem aplikację, ustawiając inną ładną wartość dla różnych wątków i zauważyłem, że "ładniejszy" wątek został zaplanowany z niższym priorytetem. ustalono, że ciąg "high priority ................" jest generowany częściej.
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);
}
Ale dlaczego w niektórych implementacjach JVM priorytet wątku java ma odwzorowanie 1: 1 z ładną wartością? //www.javamex.com/tutorials/threads/priority_what.shtml Dodatkowo napisałem aplikację, ustawiając różną wartość różnicy dla różnych wątków i zauważyłem, że ładniejszy wątek został zaplanowany z niższym priorytetem, sprawdzając, jak często dane wyjściowe są. – pierrotlefou
@pierr, co ciekawe, okazuje się, że zarówno NPTL, jak i Linux naruszają POSIX.1. Zaktualizuję moją odpowiedź. –
@ FrédéricHamidi Czy to samo w tym przypadku, że wątki w Linuksie nie mają wspólnej przyjemnej wartości? – blueskin