Подскажите новичку. Есть процесс с несколькими потоками разных приоритетов (используется schedpolicy RoundRobin) среди которых критический поток. Каким способом гарантировано получать управление в этот критический поток каждые 400-500 мксек. В настоящий момент выставляю высшый приоритет, изменяю системный тик до 100мксек и в остальных потоках (как правило все они в ожидании синхронизирующего момента) по завершении логической операции вызываю sched_yield (напр. поток ожидает очередь исходящих пакетов, отправил пакет - не отправляем следующий а вызываем sched_yield). Как то это все не по науке.
1 Как правильно организовать управление потоками?
можно ли не полагаться на ядро, а самому полностью контролировать выделение времени потоку и контроль переключения?
2. Какая схема schedpolicy более строгая, гибкая?
>Подскажите новичку. Есть процесс с несколькими потоками разных приоритетов (используется schedpolicy RoundRobin)
>среди которых критический поток. Каким способом гарантировано получать управление в этот
>критический поток каждые 400-500 мксек. В настоящий момент выставляю высшый приоритет,
[...]
>1 Как правильно организовать управление потоками?
>можно ли не полагаться на ядро, а самому полностью контролировать выделение времени
>потоку и контроль переключения?Нельзя - ядро не даст. Если приложение реального времени вроде техпроцесса, то нужно брать RTOS вроде QNX и курить её мануалы. В обычном Unix можешь нарваться на очень серьёзные неприятности.
>2. Какая схема schedpolicy более строгая, гибкая?Вряд ли кто скажет - слишком уж специфичная задача.