【问题标题】:Is there a way to lock the linux scheduler on a particular pthread?有没有办法将 linux 调度程序锁定在特定的 pthread 上?
【发布时间】:2020-05-15 04:13:08
【问题描述】:

VxWorks 上有一个名为taskLock 的函数,它可以防止重新安排任务。

Linux 上,我们有一个很好的锁风扇作为互斥锁和信号量,但是 VxWorks' taskLock 函数允许一个任务在不与另一个交互的情况下禁用中断那些。

此时我知道我可以使用pthread_setcancel_state ( PTHREAD_CANCEL_DISABLE, NULL ),但我正在寻找的功能做得更多。 taskLock 功能不仅仅是一个中断禁用,它还完全禁用了任务切换。它为调用函数提供调用进程/父进程拥有的全部资源。

Linux 管理 pthread 的方式完全不同。 Linux 上使用 pthread 模拟 taskLock 调用的最佳方法是什么?

这是数据表给出的详细描述:

此例程禁用任务上下文切换。调用此例程的任务将是唯一允许执行的任务,除非该任务通过使自己不再准备好而明确放弃 CPU。通常,此调用与 taskUnlock( ) 配对;它们一起围绕代码的关键部分。这些抢占锁是通过一个允许嵌套抢占锁的计数变量来实现的。在 taskUnlock() 被调用的次数与 taskLock() 一样多之前,抢占不会被解锁。

感谢您的观看。

【问题讨论】:

    标签: linux pthreads real-time scheduler vxworks


    【解决方案1】:

    在用户空间中没有直接的类似物(内核任务可以禁用抢占),但这种效果通常是通过使用比其他任务具有更高调度优先级的实时调度策略(SCHED_FIFOSCHED_RR)来实现的.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多