以下分别向其它两个任务发送信号
if(flag_bao==1||flag_uart==1) //任务2运行条件满足
{
os_send_signal(2); //给任务2发信号
}
else if(flag_cun==1||flag_cun1==1) //任务3运行条件满足
{
os_send_signal(3); //给任务3发信号
}
任务2最后等待信号
。。。。。。。。。
if(flag_bao==1) //有数据上报
{
。。。。。。。。。
}
os_wait1(K_SIG); //退出该任务,任务2等待信号
任务3最后等待信号
。。。。。。。。。
if(flag_save_time==1) //有数据要保存
{
。。。。。。。。。
}
os_wait1(K_SIG); //退出该任务,任务3等待信号
以下任务2的中间等信号,在任务2中第一处(收到查询命令)
if(qdjz||dzbq_sqs) //待写数不为0
{
while(dxs||sqs0||dzbq_sqs)
{
os_wait1(K_SIG); //退出该任务,等待信号
}
}
else if(flag_cun==1||flag_cun1==1) //切换到任务3条件满足
{
os_wait1(K_SIG); //退出该任务,等待信号
}
以下任务2的中间等信号,在任务2中第二处(收到转发命令)
if(qdjz||dzbq_sqs) //待写数不为0
{
while(dxs||sqs0||dzbq_sqs)
{
os_wait1(K_SIG); //退出该任务,等待信号
}
}
else if(flag_cun==1||flag_cun1==1) //切换到任务3条件满足
{
os_wait1(K_SIG); //退出该任务,等待信号
}
以下任务3的中间等信号
while(jh!=0&&jh!=4)
{
os_wait1(K_SIG); //退出该任务,等待信号
}
请问以上的结构会不会导致RTX51-TINY任务调度出现问题,例如任务死锁,不能切换等... |