如果资源被RTOS系统中的另一个任务锁定,那么没有锁定资源的任务会等待吗?

时间:2016-07-17 12:11:52

标签: rtos

如果资源被taskA使用信号量锁定,并且任何其他任务访问资源(不受保护的访问)而没有锁定它,那么任务是否会进入等待状态?或者它是RTOS系统中的代码错误。

taskA()  //low priority
{
    SemLock(A);
    A=10;
    A=A+1;
    SemmUnlock(A);
}

taskB() //high priority
{
    A=20;
}

如果taskA正在运行且taskB到达那么taskB会在RTOS系统中等待吗?

1 个答案:

答案 0 :(得分:1)

不,如果没有互斥锁(信号量)的任务没有尝试获取互斥锁,那么在使用资源之前它不会阻塞。 RTOS没有任何关于哪些任务正在使用资源的特殊意识。每个任务必须在使用资源之前获取互斥锁,以保护资源免受潜在的多次破坏性访问。

在您的示例中,任务B可以抢占任务A并在任务A锁定信号量时损坏资源。