Я пытался установить хорошие значения, используя setpriority для потоков, но не могу заставить его работать правильно. Всякий раз, когда я делаю приоритет получения, значение всегда увеличивается как -1. Так что в принципе я не могу установить ни одно из хороших значений в любом случае.
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/resource.h>
static int var = 0;
void *my_inc()
{
setpriority(PRIO_PROCESS, pthread_self(), -10);
printf("thread 1 within %d \n", getpriority(PRIO_PROCESS, pthread_self()));
for(int i = 1; i < 10; i++)
{
var = i;
sleep(1);
printf("hi ");
}
pthread_exit(NULL);
}
void *my_print()
{
while(1)
{
printf("var %d\n", var);
sleep(1);
}
}
int main(void)
{
pthread_t thread_id1, thread_id2, thread_id3;
pthread_create(&thread_id1, NULL, my_inc, NULL);
printf("thread 1 before %d \n", getpriority(PRIO_PROCESS, thread_id1));
setpriority(PRIO_PROCESS, thread_id1, -10);
pthread_create(&thread_id3, NULL, my_print, NULL);
setpriority(PRIO_PROCESS, thread_id3, 10);
printf("thread 3 after %d \n", getpriority(PRIO_PROCESS, thread_id3));
printf("thread 1 after %d \n", getpriority(PRIO_PROCESS, thread_id1));
for(int j = 0; j < 20; j++)
{
printf("main %d ", j);
sleep(1);
}
pthread_join(thread_id1, NULL);
exit(0);
pthread_exit(NULL);
printf("After thread\n");
return 0;
}