rt_thread的ipc机制之互斥锁源码分析

rt_thread的ipc机制之互斥锁源码分析

ID:6579232

大小:170.00 KB

页数:14页

时间:2018-01-18

rt_thread的ipc机制之互斥锁源码分析_第1页
rt_thread的ipc机制之互斥锁源码分析_第2页
rt_thread的ipc机制之互斥锁源码分析_第3页
rt_thread的ipc机制之互斥锁源码分析_第4页
rt_thread的ipc机制之互斥锁源码分析_第5页
资源描述:

《rt_thread的ipc机制之互斥锁源码分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、互斥锁是管理临界资源的一种有效手段。因为互斥锁是独占的,所以在一个时刻只允许一个线程占有互斥锁,利用这个性质来实现共享资源的互斥锁保护。任何时刻只允许一个线程获得互斥量对象,未能够获得互斥量对象的线程被挂起在该互斥量的等待线程队列上。1互斥锁控制块[cpp]viewplaincopyprint?1./** 2. * Mutual exclusion (mutex) structure 3. */  4.struct rt_mutex  5.{  6.    struct rt_ipc_object parent;                        /**< inher

2、it from ipc_object *///派生自IPC对象  7.  8.    rt_uint16_t          value;                         /**< value of mutex *///此互斥锁的值  9.  10.    rt_uint8_t           original_priority;             /**< priority of last thread hold the mutex *///原始优先级,即此互斥锁拥有者线程的优先级  11.    rt_uint8_t           hold;

3、                          /**< numbers of thread hold the mutex *///此互斥锁当前已被几个线程(同一线程)take的次数  12.  13.    struct rt_thread    *owner;                         /**< current owner of mutex *///此互斥锁的拥有者线程  14.};  15.typedef struct rt_mutex *rt_mutex_t;  /***Mutualexclusion(mutex)structure*/struc

4、trt_mutex{structrt_ipc_objectparent;/**

5、d*owner;/**

6、一次互斥锁,但rt-thread也允许线程重复take同一线程,此时hold的值就用来做记录线程重复take互斥锁的次数,以便在realse同样多次时才去唤醒互斥锁上的挂起的线程.而owner表示此互斥锁的拥有者线程,rt-thread只允许同一时间只有一个线程拥有这个互斥锁,此参数就是用来记录此线程的.2初始化及创建互斥锁2.1初始化互斥锁[cpp]viewplaincopyprint?1./** 2. * This function will initialize a mutex and put it under control of resource 3. * manage

7、ment. 4. * 5. * @param mutex the mutex object 6. * @param name the name of mutex 7. * @param flag the flag of mutex 8. * 9. * @return the operation status, RT_EOK on successful 10. */  11.rt_err_t rt_mutex_init(rt_mutex_t mutex, const char *n

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。