The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Pthreads. Задание приоритета потоку"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Pthreads. Задание приоритета потоку"  
Сообщение от vdv email(??) on 06-Окт-06, 11:42 
Всем привет. Пишу вот мультипоточную прогу и столкнулся с небольшой проблемой,
а именно: не получается изменить приоритет потоку.
изменяю приоритет слудующим образом:

.......
struct sched_param param;
int policy = SCHED_OTHER;
int rc;
pthread_t thread;
.......
rc = pthread_create(&thread,NULL,thread_func,NULL);
.....
param.sched_priority = -1;
rc = pthread_setschedparam(thread,policy,¶m);
// тут rc == EINVAL, а это значит, что или неверное policy
//или значение priority для этого policy задано неверно
.........
rc = pthread_getschedparam(thread,&policy,¶m);
printf("%d\n", param.sched_priority);
// убеждаюсь, что priority не изменилось
// как было до этого ноль, так и осталось
.........

Прога компилится на системе Suse Linux 10.0, gcc 4.0.2.

Вопрос, возможно ли вообще изменить приоритет потоку? И если да, то как?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Pthreads. Задание приоритета потоку"  
Сообщение от Ganduras on 06-Окт-06, 12:27 
>rc = pthread_create(&thread,NULL,thread_func,NULL);
>.....
>param.sched_priority = -1;
>rc = pthread_setschedparam(thread,policy,param);
>// тут rc == EINVAL, а это значит, что или неверное policy
>
>//или значение priority для этого policy задано неверно

скорее всего не понимает именно -1 в значениях

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Pthreads. Задание приоритета потоку"  
Сообщение от kuzmi4 email(ok) on 06-Окт-06, 12:42 
>>rc = pthread_create(&thread,NULL,thread_func,NULL);
>>.....
>>param.sched_priority = -1;
>>rc = pthread_setschedparam(thread,policy,param);
>>// тут rc == EINVAL, а это значит, что или неверное policy
>>
>>//или значение priority для этого policy задано неверно
>
>скорее всего не понимает именно -1 в значениях

так я для проверки вызываю функцию sched_get_priority_max()

int policy= SCHED_OTHER;
param.sched_priority = sched_get_priority_max(policy);

эта функция возвращает ноль, как впрочем и функция sched_get_priority_min()

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Pthreads. Задание приоритета потоку"  
Сообщение от Ganduras on 07-Окт-06, 13:08 
>так я для проверки вызываю функцию sched_get_priority_max()
>
>int policy= SCHED_OTHER;
>param.sched_priority = sched_get_priority_max(policy);
>
>эта функция возвращает ноль, как впрочем и функция sched_get_priority_min()

некоторые системы или библиотеки потоков не поддерживают приоритизацию потоков. То, что эти фунции возвращают одинаковое значение, равное нулю, говорит в пользу этого. Возможно это указано в документации. Можно также посмотреть в исходниках ядра (поиск: grep -r или -R pthread_setschedparam <путь к иходникам ядра>).

Возможно проблема устранится с обновлением ядра на более свежее из 2.6.x.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру