4.2. 同步线程
sched_yield 函数是一种同步机制,允许较低优先级线程有机会运行。在较差的应用程序中发出不良的应用程序时,这种类型的请求容易出错。
较高的优先级线程可以调用 sched_yield (),以允许其他线程有机会运行。调用进程将移到该优先级中运行的进程的尾部。当发生这种情况时,如果没有其他进程以同一优先级运行,调用进程将继续运行。如果该进程的优先级很高,它可能会创建一个忙碌的循环,从而导致机器无法使用。
当 SCHED_DEADLINE 任务调用 sched_yield () 时,它会提供配置的 CPU,剩余的运行时会立即节流,直到下一个周期为止。sched_yield () 行为允许任务在下一个时间段内唤醒。
调度程序可以更好地决定何时以及是否实际还有其他线程等待运行。避免在任何实时任务中使用 sched_yield ()。
流程
要调用
sched_yield ()函数,请运行以下代码:for(;;) { do_the_computation(); /* * Notify the scheduler at the end of the computation * This syscall will block until the next replenishment */ sched_yield(); }SCHED_DEADLINE任务受基于冲突的搜索(CBS)算法节流,直到下一个周期(在循环的下一次执行开始)。