Официальный форум СВД Встраиваемые Системы
09 Декабря, 2016, 02:56:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Задание приоритета потока  (Прочитано 935 раз)
chuzhik
Пользователь

Сообщений: 29


« : 18 Мая, 2012, 14:40:02 »

Добрый день

Подскажите, пожалуйста, пару моментов.

У нас есть программа под QNX 6.3, бОльшую часть окна которой занимает PtRaw, рядом находится панель с кнопками. На PtRaw рисуется графическая информация. Кнопки управляют режимом отрисовки. Недавно наблюдал такую ситуацию: когда информации приходит слишком много, обработчик нажатия кнопки не срабатывает. Видимо, в этот поток просто не передается управление.

PtRaw перерисовывается по таймеру - в отдельном потоке функция, получающая сообщения от таймера и вызывающая функцию перерисовки PtRaw.

Первое, что пришло в голову - запустить этот поток с пониженным приоритетом.

    pthread_attr_init(&attr_damage);
    pthread_attr_setinheritsched(&attr_damage, PTHREAD_EXPLICIT_SCHED);
    pthread_attr_setschedpolicy(&attr_damage, SCHED_RR);
    params.sched_priority = 8;
    params.sched_curpriority  = 8;
    pthread_attr_setschedparam(&attr_damage, &params);
   
    int res = pthread_create(&trArm_damage, &attr_damage, s_damage, this);

Набираю в консоли pidin|grep "my_prog". Все потоки в программе имееют один и тот же приоритет - 10.

Подскажите, пожалуйста, как правильно запустить один из потоков с приоритетом ниже, чем у остальных потоков этого же процесса.
Может быть есть еще какой-то путь, позволяющий повысить приоритет нажатия кнопок в программе?

Записан
Андрей Сеньков
Администратор
Опытный пользователь

Сообщений: 262



WWW
« Ответ #1 : 21 Мая, 2012, 12:09:22 »

Возможно, причина такого поведения в т.н. приоритете пульса (если таймер использует пульсы для уведомлений).

Поле sigev_priority в структуре sigevent для пульсов задает приоритет с которым этот пульс будет обрабатываться. Если при инициализации, например, с помощью SIGEV_PULSE_INIT,  приоритет задается как SIGEV_PULSE_PRIO_INHERIT то поток будет обрабатывать пульс с исходным приоритетом.

Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 19 Октября, 2016, 18:00:02