完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 gjianw217 于 2015-10-25 15:41 编辑 在本帖子中,主要分析一下庆科MiCO RTOS的信号量,具体包括: OS信号量 MiCO 信号量关键API MiCO信号量示例 MiCO信号量测试结果 一、OS信号量 在常见的OS系统中,信号量常用在多线程多任务同步中,即主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。在linux系统中,信号量的常见用法是将要保护的变量放在sem_wait和sem_post中间所形成的临界区内,这样该变量就会被保护起来。 二、MiCO 信号量关键API 在MiCO中,对于信号量的定义,位于SDK_MiCOKit_v2.3.0.2includemico_rtos.h中,主要有以下函数: (1)OSStatus mico_rtos_init_semaphore(mico_semaphore_t* semaphore, int count ); 该函数为初始化一个信号量,并提供一个基数,参数1为指向要初始化的信号量句柄的指针(typedef void* mico_semaphore_t;);参数2为该信号量的最大计数值 (2)OSStatus mico_rtos_set_semaphore(mico_semaphore_t* semaphore ); 该函数为设置(增加,发出)信号量,参数为指向要设置的信号量句柄的指针 (3)OSStatus mico_rtos_get_semaphore(mico_semaphore_t* semaphore, uint32_t timeout_ms ); 该函数为获取(减少,接收)信号量,并提供超时机制,参数1为指向要获取的信号量句柄的指针,参数2为返回前等待的毫秒数 三、MiCO信号量示例该示例参数官方的测试demo,参考示例代码位于SDK_MiCOKit_v2.3.0.2DemosCOM.MXCHIP.BASICos,官网示例代码说明http://mico.io/wiki/doku.php?id=basic_os。 首先,定义了一个全局变量和两个信号量 然后,分别定义了两个线程回调函数,一个使全局变量递增,一个使全局变量递减; 最后,在测试函数中,初始化信号量,并创建两个线程,分别执行定义的回调函数。
四、MiCO信号量测试结果 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 00:45 , Processed in 0.506108 second(s), Total 70, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号