带有RTOS的C语言程序中,如何合理地读写全局变量?

        带有RTOS下和不带RTOS(裸机状态)的全局变量读写方法有很大不同。此篇文章将讨论带有RTOS的C语言程序中,如何合理第读写全局变量。

        在嵌入式软件开发中,面对高并发、高复杂业务的场景,类似于UCOS、FreeRTOS、RT-Thread的实时操作系统RTOS越来越多地应用到软件设计中。此种情况下,软件设计方法和裸机状态下有很大不同,RTOS引入了多任务、信号量、邮箱、消息队列、事件标志组等概念和机制。当一个全局变量被多个任务或者多个线程共享时,这个全局变量就变成了共享资源,此时读写共享变量时需要进行一些保护。(注意,全局变量仅仅被一个任务使用时,就不是共享资源了,其读写方法和)。

方法一:开中断和关中断

int varStudentScore;

void modifyvarStudentScore(int score)        /*注意此函数可能被多个线程或者中断同时调用*/

{

        OS_CPU_SR cpu_sr;
        OS_ENTER_CRITICAL();         /*进入临界段*/

        varStudentScore=score;

        OS_EXIT_CRITICAL();           /*退出临界段*/

}

最简单的方法就是先关中断进入临界段,再对全局变量进行修改,再退出临界段。

方法一适合场景

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值