OpenEdv-开源电子网
标题:
关于例程使用互斥信号量初始化问题
[打印本页]
作者:
ksi魔杰
时间:
2016-6-10 15:46
标题:
关于例程使用互斥信号量初始化问题
OS_MUTEX TEST_MUTEX; //定义一个互斥信号量
//创建一个互斥信号量
OSMutexCreate((OS_MUTEX* )&TEST_MUTEX,
(CPU_CHAR* )"TEST_MUTEX",
(OS_ERR* )&err);
void task1_task(void *p_arg)
{
OSMutexPend (&TEST_MUTEX,0,OS_OPT_PEND_BLOCKING,0,&err); //请求互斥信号量 和普通的信号量 用法相似
。。。。。。。。
OSMutexPost(&TEST_MUTEX,OS_OPT_POST_NONE,&err); //释放互斥信号量
}
void task2_task(void *p_arg){
OSMutexPend (&TEST_MUTEX,0,OS_OPT_PEND_BLOCKING,0,&err); //请求互斥信号量 和普通的信号量 用法相似
。。。。。。。。
OSMutexPost(&TEST_MUTEX,OS_OPT_POST_NONE,&err); //释放互斥信号量
}
我想问两个任务刚开始都在请求互斥信号量 那刚开始是谁发的信号量, 我的理解是 初始化的时候 就有一次可用的互斥信号量
如果是这样 那么问题来了 如果我建立了一个互斥信号量 一开始我不想用,想让目标任务一直等待 某一时刻另外的任务发出互斥信号量 该怎么设置啊
作者:
正点原子
时间:
2016-6-11 20:04
帮顶
作者:
梁先生UP
时间:
2018-9-26 18:27
不知道楼主这个问题是怎么解决的?
作者:
郭正东
时间:
2019-1-6 19:25
楼主你好,互斥信号量0表示可用,在创建信号量时已经默认为0了,默认是可用的,你的问题感觉方法很多,可以先试试一开机打算让它一直等待的任务进while(1)之前先请求互斥信号量(上锁,就是把信号量置1),然后进while一直等,另一个任务某个时刻释放,等的任务就可以请求通过了。你看说清楚了吗?不清楚留言哈,我写写代码发上来一起探讨探讨
作者:
szzk
时间:
2021-6-28 14:40
郭正东 发表于 2019-1-6 19:25
楼主你好,互斥信号量0表示可用,在创建信号量时已经默认为0了,默认是可用的,你的问题感觉方法很多,可以 ...
你好,互斥信号量是有请求,在这个任务里面就要有释放吗,我用互斥信号量有错误码22401,22402,25006
欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/)
Powered by Discuz! X3.4