在 VxWorks 上,有一个名为taskLock
的函数可以防止重新计划任务。
在 Linux 上,互斥锁和信号量是一个很好的锁风扇,但是 VxWorks 'taskLock
函数允许任务禁用中断而不与其他的。
在这一点上,我知道我可以使用pthread_setcancel_state ( PTHREAD_CANCEL_DISABLE, NULL )
,但我正在寻找的功能正在做更多工作。 taskLock
功能不仅可以禁止中断,还可以完全禁止任务切换。它将调用进程/父级拥有的全部资源提供给调用函数。
Linux 管理pthread的方式非常不同。 使用pthread在 Linux 上模拟taskLock
调用的最佳方法是什么?
这是数据表中的详细描述:
此例程禁用任务上下文切换。调用该例程的任务将是唯一允许执行的任务,除非该任务因不再准备就绪而明确放弃了CPU。通常,该调用与taskUnlock()配对。它们一起围绕着代码的关键部分。这些抢占锁通过允许嵌套抢占锁的计数变量实现。直到taskUnlock()和taskLock()一样被调用多次,抢占才会被解锁。
感谢您的关注。
答案 0 :(得分:0)
在用户空间中没有直接的类比(内核任务可以禁用抢占),但是这种效果通常是通过使用具有更高调度优先级的实时调度策略(SCHED_FIFO
或SCHED_RR
)来实现的胜过其他任务。