Со страницы руководства pthread_create
int pthread_create (pthread_t * thread, const pthread_attr_t * attr , void * (* start_routine) (void *), void * arg);
вы можете создать свой собственный атрибут и установить его свойства, включая priority , как вы это сделали.
param.sched_priority = 0;
И со страницы руководства pthread_setschedparam
int pthread_setschedparam (поток pthread_t, политика int, структура const sched_param * param);
pthread_getschedparam()
и pthread_setschedparam()
позволяют извлекать политику планирования и параметры планирования отдельных потоков в многопоточном процессе и устанавливать ,Для SCHED_FIFO и SCHED_RR единственным обязательным элементом структуры sched_param является приоритет sched_priority .Для SCHED_OTHER затронутые параметры планирования зависят от реализации .
Если функция pthread_setschedparam()
завершится неудачно, никакие параметры планирования не будут изменены для целевого потока.
Таким образом, выше четко указано, что вы можете установить и получить параметры планирования для политики планирования RR
и FIFO
.Также в случае SCHED_OTHER
это зависит от реализации.
После запуска потока, который меняет приоритет, выполните команду и проверьте.Например, выполните приведенную ниже команду
ps -T -l [PID]
и отметьте priority
относительно PID
.
Также прочитайте @paxdiablo ответ здесь о планировании потоков в Linuxприоритеты.