4.2. 同步线程


sched_yield 函数是一个同步机制,可为较低优先级线程获得运行机会。在较差的应用程序中发出不良的应用程序时,这种类型的请求容易出错。

较高的优先级线程可以调用 sched_yield (),以允许其他线程有机会运行。调用进程将移到该优先级中运行的进程的尾部。当发生这种情况时,如果没有其他进程以同一优先级运行,调用进程将继续运行。如果该进程的优先级很高,它可能会创建一个忙碌的循环,从而导致机器无法使用。

SCHED_DEADLINE 任务调用 sched_yield () 时,它会提供配置的 CPU,剩余的运行时会立即节流,直到下一个周期为止。使用 sched_yield () 时,任务将在下一期开始时唤醒。

调度程序可以更好地决定何时以及是否实际还有其他线程等待运行。避免在任何实时任务中使用 sched_yield ()

先决条件

  • 已安装 POSIX 线程(pthread)开发库。

流程

  • 要调用 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)算法节流,直到下一个周期(在循环的下一次执行开始)。

    提示

    如需更多信息,请参阅系统中的 pthread.h (P )、sched_yield (2)sched_yield (3p) 手册页。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部