有没有一种方法可以将Linux调度程序锁定在特定的pthread上?

时间:2020-01-29 15:57:01

标签: linux pthreads real-time scheduler vxworks

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

Linux 上,互斥锁和信号量是一个很好的锁风扇,但是 VxWorks 'taskLock函数允许任务禁用中断而不与其他的。

在这一点上,我知道我可以使用pthread_setcancel_state ( PTHREAD_CANCEL_DISABLE, NULL ),但我正在寻找的功能正在做更多工作。 taskLock功能不仅可以禁止中断,还可以完全禁止任务切换。它将调用进程/父级拥有的全部资源提供给调用函数。

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

这是数据表中的详细描述:

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

感谢您的关注。

1 个答案:

答案 0 :(得分:0)

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