У меня есть поток в реальном времени в Linux (3.4). При определенных условиях я хочу, чтобы он отказался от управления другими потоками с одинаковым приоритетом, даже если он не закончил использовать свой текущий временной интервал. Я думал, используя следующий код:уступая от ядра linux
if (condition) {
resched_task();
cond_resched();
}
однако, я не вижу никого другого в коде делает это, заставляет меня думать, что есть какой-то другой (лучше?) Способ сделать это. Есть ли стандартный способ сделать это?
Спасибо. Вы не знали бы разницу между sched_yield() и yield(), не так ли? – John
@John О какой функции yield() вы говорите? Я не знаю, кто называется просто 'yield()', извините. – TypeIA
В core.c (строка 5029) существует функция, называемая yield. В верхней части функции есть большое предупреждение: «Никогда не используйте эту функцию, есть вероятность 99%, что вы делаете это неправильно». ... В итоге она вызывает вызов sys_sched_yield(), из-за чего я немного устал. – John