У меня есть следующий источник, который бы иметь приоритет SCHED_RR 90:sched_setscheduler предназначен для всех потоков или основной темы?
int main(int argc, char** argv)
{
const char *sched_policy[] = {
"SCHED_OTHER",
"SCHED_FIFO",
"SCHED_RR",
"SCHED_BATCH"
};
struct sched_param sp = {
.sched_priority = 90
};
pid_t pid = getpid();
printf("pid=(%d)\n",pid);
sched_setscheduler(pid, SCHED_RR, &sp);
printf("Scheduler Policy is %s.\n", sched_policy[sched_getscheduler(pid)]);
pthread_t tid ;
pthread_create(&tid , NULL, Thread1 , (void*)(long)3);
pthread_create(&tid , NULL, Thread2 , (void*)(long)3);
pthread_create(&tid , NULL, Thread3 , (void*)(long)3);
while(1)
sleep(100);
}
в то время как оболочка «сверху», я могу видеть, что процесс имеет PR с -91, посмотрите, как он работает, Насколько я знаю, в Linux, thread1 и thread2 и thread3 различные задачи от основного потока, они просто одни и те же виртуальную память, я хотел бы знать в этом тесте, мне нужно добавить
pthread_setschedparam(pthread_self(), SCHED_RR, &sp);
для всех thread1, thread2 и thread3, так что все эти 3 могут быть schedu led с SCHED_RR?! или мне это не нужно?! и как я могу наблюдать , что потоки thread1, thread2 и thread3 являются SCHED_RR или SCHED_OTHER?!
Edit:
sudo chrt -v -r 90 ./xxx.exe
будет видеть:
pid 7187's new scheduling policy: SCHED_RR
pid 7187's new scheduling priority: 90
как я могу быть уверен, что это только для основного потока?! или все потоки в pid 7187 - политика SCHED_RR?! и снова, как это наблюдать?!