[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]void Task1(*p_arg)
{
(void)p_arg;
while(1)
{
OSMutexPend(Fun_Mutex, 0, &err);
// Task1 do somthing...
// OSMutexPost(Fun_Mutex);
OSTimeDlyHMSM(0, 0, 0, 200);
}
}
void Task2(*p_arg)
{
(void)p_arg;
while(1)
{
// OSMutexPend(Fun_Mutex, 0, &err);
// Task2 do somthing...
OSTimeDlyHMSM(0, 0, 0, 500);
OSMutexPost(Fun_Mutex);
}
}[/mw_shl_code]
请问下在 ucOS-II中使用互斥信号量的时候,在 Task1中请求的信号量必须要在 Task1中发送出去吗?如果 Task1只负责请求信号量而 Task2对该信号量进行释放(代码如上) Task1是否还能正常运行呢?
自己试了下,Task1只能执行一次,Task2的运行不受影响,但是 Task1便不再执行,,请问下这是这么回事?
Task1执行第一次的原因是知道的,就是不明白为什么 Task2在发送互斥信号量以后 Task1还是不能执行,谢谢。 |