当前位置: 首页 > news >正文

如何做网站商城seo收费

如何做网站商城,seo收费,安徽省建设工程信息网官网是什么网站,个人可以做外贸网站吗文章目录 为什么需要互斥访问?使用队列实现互斥访问休眠和唤醒机制环形缓冲区 为什么需要互斥访问? 在裸机中,假设有两个函数(func_A, func_B)都要修改a的值(a),那么将a定义为全局变…

文章目录

    • 为什么需要互斥访问?
    • 使用队列实现互斥访问
      • 休眠和唤醒机制
      • 环形缓冲区


为什么需要互斥访问?

在裸机中,假设有两个函数(func_A, func_B)都要修改a的值(a++),那么将a定义为全局变量a=0,main函数调用func_A();func_B(); 此时a的值为2。因为不存在多任务执行,代码是按照顺序执行的。

在多任务系统中,多个任务在微观上是串行执行,宏观上是并行执行的。 假设两个任务(func_A, func_B)也都要修改a的值(a++),会有什么情况呢?
首先,将修改a的值的代码a++做个拆分:
1、从内存中将a的值读到寄存器R0中;
2、修改寄存器R0的值;
3、将寄存器R0的值写回内存a中。

第一个时间片段执行 func_A,执行完第一步(从内存中将a的值读到寄存器R0中,a=R0=0),任务切换要释放CPU使用权。(任务切换之前会将现场保存下来 R0=0)
第二个时间片段执行 func_B,期间将3个步骤都执行完(a=R0=0;R0=R0+1=0+1=1; R0=a=1)后,任务切换要释放CPU使用权。
第三个时间片段,func_A接着执行,之前先将现场恢复(R0=0),执行后面两个步骤(R0=R0+1=0+1=1; R0=a=1)

在这里插入图片描述
通过上面的两个任务细分执行的过程,会发现当多个任务共用操作一个变量时,会发生异常。为了避免这种异常,引入互斥访问变量的方式。

使用队列实现互斥访问

在这里插入图片描述
当有多个任务操作变a时,为了确保每个任务操作a期间不被其他任务所影响,就调用队列来做隔离,任务B要去读a的值时直接调用队列处理好的数据即可。
队列的任务:1、关闭中断;2、环形缓冲区(操作a的值);3、链表操作;4、打开中断

当任务A调用队列关闭中断后,其他任务不会再被调度执行(相当于逻辑程序),操作完变量a之后,打开中断,此时恢复CPU调度机制。使用队列可以实现互斥访问,避免多个任务同时操作一个变量时造成的异常现象。

RTOS中 调度队列函数接口 :写队列xQueueSend,读队列xQueueReceive

休眠和唤醒机制

任务在读队列的时候会出现两种情况:
第一种情况、读到队列中的值返回;
第二种情况、队列读不到值,将任务休眠

场景:只有两个任务A和任务B,读写a的值
第一个时间片段:任务A 运行,在这个时间段中还没有调用队列修改a的值;
第二个时间片段:任务B运行,读队列,没有得到a的值,将任务B休眠;
第三个时间片段 —— 第五个时间片段:由于任务B处于休眠状态,因此任务A全速运行
第六个时间片段:任务A 写队列修改a的 值,并唤醒任务B
第七个时间片段:任务B 继续执行。
在这里插入图片描述
因此使用队列的方式,不仅能实现互斥访问,还能使用休眠和唤醒机制让CPU更高效的运行。
(注:唤醒任务B,任务B是不会马上执行,要等到下一个tick中断)

写队列的动作:1、修改 Data值;2、唤醒任务wake up
怎么知道唤醒哪个任务呢?队列链表Queue.list,将需要唤醒的任务放在链表里。

读队列的动作:1、有Data值,返回;2、无Data,休眠;
休眠:1、将任务从ReadyList移动到DelayList;2、将任务记录到Queue.list队列链表。

环形缓冲区

在这里插入图片描述
缓冲区本质上就是数组,假设这个缓冲区的长度为8,写缓冲区指针w刚开始在0的位置,每写一个val,指针w位置+(1%8),以此类推,最后的w+(8%8)。这样就形成闭环,也就是环形缓冲区。(读操作也是一样的)

由于链表的大小是有限的,所以当任务写缓冲区的时候发现已经写满了,就会将任务放到Queue.list队列链表中的list for send 链表中
在任务在读缓冲区的值时没有读出来,会将任务放到Queue.list队列链表中的list for receive 链表中

http://www.zhongyajixie.com/news/19680.html

相关文章:

  • 免费网站开发框架seo推广公司哪家好
  • 做网站用到什么技术广州网站快速优化排名
  • 大型医疗网站建设seo黑帽技术有哪些
  • 网站建设信息模板站长工具综合查询系统
  • 品牌建设网站规划网推拉新app推广接单平台
  • 艺术网站制作排名优化哪家专业
  • 培训网站建设学校北京外贸网站优化
  • 企业网站开发有哪些今日军事新闻热点事件
  • 网站网页制作电话北京排名seo
  • 单页营销网站模板最权威的品牌排行榜网站
  • 做任务赚钱的网站起什么名字好产品免费推广网站有哪些
  • 燕郊个人做网站关键词排名手机优化软件
  • 用ai怎么做网站山西seo优化
  • wordpress做的学校网站会计培训班一般收费多少
  • 微信公众号和wordpress合肥seo排名收费
  • 中国十大网站建设企业网站运营策划书范文
  • 特产网站模板中国十大电商公司排名
  • 网站建设服务费武汉seo优化排名公司
  • 安庆网站建设服务网青岛百度推广优化
  • c 网站开发实例seo关键词优化工具
  • 永清建设局网站网络营销案例ppt
  • 武汉装修公司哪家好什么是网站seo
  • 深圳西乡网站建设公司seo推广方案怎么做
  • 店铺设计效果图河源网站seo
  • 国外可以做自媒体的网站营销案例
  • 球类网站如何做宣传哈尔滨怎样关键词优化
  • 手机网站开发应注意推广渠道有哪些
  • 做网站需要服务器和什么软件外包公司怎么赚钱
  • 阿里巴巴怎么做企业网站河北关键词排名推广
  • 网站制作广告seo的方法