|
举个例,假如有三个任务task1 ,task2,task3。
创建了2个互斥信号量 mutex_sem1,mutex_sem2.
想实现的目的:把两个任务的采样送到同一个显示任务显示,为了保证对资源访问的独占性,使用互斥信号量。(以下只是一种设计思路,是有问题的)
问题:以下这么写,采样2的显示会受到影响的,不知道该用什么思路更好,邮箱 队列?要保证采样1和采样2 的显示不受影响,即申请采样1信号量时,如果未申请到,任然需要执行采样2显示的程序。
void task1( )//显示
{
u8 err;
OSMutexPend(mutex_sem1,0,&err);
//显示采样1
OSMutexPost(mutex_sem1);
OSMutexPend(mutex_sem2,0,&err);
//显示采样2
OSMutexPost(mutex_sem2);
}
void task2()//采样1
{
OSMutexPend(mutex_sem1,0,&err);
//采样1
OSMutexPost(mutex_sem1);
}
void task3()//采样2
{
OSMutexPend(mutex_sem2,0,&err);
//采样2
OSMutexPost(mutex_sem2);
} |
|