TI中文支持网
TI专业的中文技术问题搜集分享网站

通过信号量来调度任务的问题

各位好,这里有个问题想请教下大家。

是这样的,在工程中创建了3个任务,任务的执行顺序是通过信号量来控制的。

大致框架如下:

void tskFxn0()
{for(;;){...Semaphore_post(sem_fxn1);...}
}

void tskFxn1()
{for(;;){...Semaphore_pend(sem_fxn1, BIOS_WAIT_FOREVER);...Semaphore_post(sem_fxn2);...}
}

void tskFxn2()
{for(;;){...Semaphore_pend(sem_fxn2, BIOS_WAIT_FOREVER);...}
}

其中tskFxn0优先级最低,其他两个任务优先级一样。

问题就是:程序会一直在tskFxn0中,一直post信号,其他任务不能得到信号

Denny%20Yang99373:

在FXN0的POST后面再加个PEND。

FXN2的PEND后面再加个POST给FXN0。

试试

Rex Kung:

Fxn1和Fxn2都在pend()等待信号量,这两个task是优先级一样的,但是同优先级的task是基于FIFO的,也就是说你可能出在一种情况就是,Fxn0 进行  post()了,但是FIFO中是Fxn2在前面pend(),Fxn1在Fxn2的后面,所以就没法执行Fxn1,故也就是无法post(sem_fxn2)。

希望能帮到你

user3757070:

你的tskFxn0任务没有休眠时间,导致其他任务没有运行时间,

在tskFxn0任务里增加休眠时间,或者挂起等待条件再运行

赞(0)
未经允许不得转载:TI中文支持网 » 通过信号量来调度任务的问题
分享到: 更多 (0)