【发布时间】: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