8、互斥信号量
【摘要】 #互斥信号量
##1、互斥信号量的原理与创建
######互斥信号量类型
typedef struct _tMutex
{
//事件控制块
tEvent event;
//已被锁定的次数
uint32_t lockedCount;
//拥有者
tTask * owner;
//拥有原始的优先级
uint32_t ownerOriginal...
#互斥信号量
##1、互斥信号量的原理与创建
######互斥信号量类型
typedef struct _tMutex
{
//事件控制块
tEvent event;
//已被锁定的次数
uint32_t lockedCount;
//拥有者
tTask * owner;
//拥有原始的优先级
uint32_t ownerOriginalPrio;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
#######初始化互斥信号量
void tMutexInit (tMutex * mutex)
{ tEventInit(&mutex->event, tEventTypeMutex); mutex->lockedCount = 0; mutex->owner = (tTask *)0; mutex->ownerOriginalPrio = TINYOS_PRO_COUNT;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
##2、互斥信号量的等待与通知
####2.1、等待信号量
uint32_t tMutexWait(tMutex * mutex,uint32_t waitTicks)
{
//1、进入临界保护区
uint32_t status = tTaskEnterCritical(); //2、如果没有锁定,则使用当前任务锁定
if(mutex->lockedCount <= 0)
{
//拥有者赋值为当前任务
mutex->owner = currentTask;
mutex->ownerOriginalPric = currentTask->prio;
mutex->lockedCount++
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
文章来源: xuesong.blog.csdn.net,作者:内核笔记,版权归原作者所有,如需转载,请联系作者。
原文链接:xuesong.blog.csdn.net/article/details/79257304
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)