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();
    }
    Copy to Clipboard Toggle word wrap

    SCHED_DEADLINE 任务受基于冲突的搜索(CBS)算法节流,直到下一个周期(在循环的下一次执行开始)。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat