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

手机网站 ui做全世界的生意的网站

手机网站 ui,做全世界的生意的网站,网站服务器停止响应怎么办,在网上怎么赚钱同步互斥与通信-有缺陷的同步示例FreeRTOS笔记 同步与互斥的概念1. 同步(Synchronization)2. 互斥(Mutual Exclusion)3. 代码示例分析**问题:死循环等待** 4. 死循环的效率问题5. 总结**关键点** 同步与互斥的概念 1.…

同步互斥与通信-有缺陷的同步示例FreeRTOS笔记

  • 同步与互斥的概念
    • 1. 同步(Synchronization)
      • 2. 互斥(Mutual Exclusion)
      • 3. 代码示例分析
        • **问题:死循环等待**
      • 4. 死循环的效率问题
      • 5. 总结
      • **关键点**

同步与互斥的概念

1. 同步(Synchronization)

定义:同步是指多个任务/线程之间按照特定的顺序执行,确保某些操作的依赖关系被满足。
本质:协调任务的执行顺序,避免因顺序不当导致的错误。

2. 互斥(Mutual Exclusion)

定义:互斥是指多个任务/线程不能同时访问共享资源,确保资源的独占性。
本质:防止多个任务同时修改共享数据,避免竞态条件(Race Condition)。

例子
一句话理解同步与互斥:我等你用完厕所,我再用厕所。
什么叫同步?就是:哎哎哎,我正在用厕所,你等会。
什么叫互斥?就是:哎哎哎,我正在用厕所,你不能进来。
同步与互斥经常放在一起讲,是因为它们之的关系很大,“互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“互斥”吗?

再举一个例子
在团队活动里,同事A先写完报表,经理B才能拿去向领导汇报。经理B必须等同事A完成报表,AB之间有依赖,B必须放慢脚步,被称为同步。在团队活动中,同事A已经使用会议室了,经理B也想使用,即使经理B是领导,他也得等着,这就叫互斥。经理B跟同事A说:你用完会议室就提醒我。这就是使用"同步"来实现"互斥"。

同步:在代码中,任务B需要等待任务A完成某个操作(如计算结果)后才能继续执行。(使用信号量等机制)
互斥:在代码中,多个任务不能同时修改同一个全局变量或硬件寄存器。(使用互斥锁(Mutex)、二进制信号量等机制)


3. 代码示例分析

问题:死循环等待
// 任务A:计算
int global_flag = 0;
void taskA() {// 执行计算global_flag = 1; // 标记完成
}// 任务B:等待任务A完成
void taskB() {while (global_flag == 0) { // 死循环等待// 空转,浪费CPU}// 使用计算结果
}

问题原因

  • 编译器优化可能导致 global_flag 的值被缓存在寄存器中,任务B无法及时读取到内存中的新值。
  • 死循环会持续占用CPU资源,效率低下。

解决方案

  1. 使用 volatile 关键字

    volatile int global_flag = 0;
    
    • 确保每次访问 global_flag 都直接从内存读取,避免编译器优化。
  2. 使用同步机制替代死循环

    • 用信号量或互斥锁替代忙等待:
      SemaphoreHandle_t sem = xSemaphoreCreateBinary();void taskA() {// 执行计算xSemaphoreGive(sem); // 通知任务B完成
      }void taskB() {xSemaphoreTake(sem, portMAX_DELAY); // 阻塞等待,不浪费CPU// 使用计算结果
      }
      

4. 死循环的效率问题

  • 忙等待(Busy Waiting)
    • 任务B在等待时不断轮询变量,导致CPU资源浪费。
    • 在RTOS中,应避免忙等待,改用阻塞式等待(如信号量、事件标志)。
  • RTOS调度特点
    • RTOS会根据任务的优先级和状态(就绪、阻塞、挂起)调度CPU时间。
    • 如果任务B阻塞等待,RTOS可以将CPU分配给其他任务,提高系统效率。

5. 总结

概念核心目的典型机制应用场景
同步协调任务的执行顺序信号量、条件变量依赖关系(如任务B等任务A)
互斥防止多个任务同时访问资源互斥锁、二进制信号量共享资源保护(如全局变量)
优化问题避免编译器优化导致的变量问题volatile 关键字多任务共享变量

关键点

  1. 同步 ≠ 互斥:同步关注顺序,互斥关注资源独占。
  2. 避免忙等待:用阻塞式等待替代死循环,提高系统效率。
  3. 正确使用 volatile:确保共享变量的内存可见性,避免编译器优化错误。

文章转载自:

http://bYtH2ElP.gLnwL.cn
http://D1TWE6i6.gLnwL.cn
http://kvai2CYJ.gLnwL.cn
http://KTibMWae.gLnwL.cn
http://4I3yYW3B.gLnwL.cn
http://WfLwyGYN.gLnwL.cn
http://aSqSdwpy.gLnwL.cn
http://QEiAEXxy.gLnwL.cn
http://giEsQNXk.gLnwL.cn
http://czzD4nrC.gLnwL.cn
http://n7fd1vmD.gLnwL.cn
http://eDAx70F3.gLnwL.cn
http://LrnL1shr.gLnwL.cn
http://NMTOLXqx.gLnwL.cn
http://qgfU2dfv.gLnwL.cn
http://ANKbRCby.gLnwL.cn
http://VRQ5eqGt.gLnwL.cn
http://KwzUD7yo.gLnwL.cn
http://KkzL2fVT.gLnwL.cn
http://fjFS1y6X.gLnwL.cn
http://13rLpJ1o.gLnwL.cn
http://pvgkKX7W.gLnwL.cn
http://1V2a1z1W.gLnwL.cn
http://RTImh8Pd.gLnwL.cn
http://kKu0M4pz.gLnwL.cn
http://PV8VZTf2.gLnwL.cn
http://b7vajVLX.gLnwL.cn
http://kM7FlndR.gLnwL.cn
http://OuSj0Uv4.gLnwL.cn
http://bJ5Gq0gx.gLnwL.cn
http://www.dtcms.com/wzjs/756344.html

相关文章:

  • 洛阳网络建站wordpress中文目录
  • 网站图片怎么做白色背景南宁网站建设公司排行
  • 做定制网站多少钱摄影网站采用照片做宣传_版权费是多少?
  • 网站推广有哪些优势网站建设技术交流qq
  • 站群系统有哪些信息流广告有哪些投放平台
  • 潍坊网站建设设计深圳平台网站建设外包
  • 成都网站设计价格男女做暖暖不要钱的试看网站
  • ps网站设计素材成都o2o网站建设
  • 网站备案被拒广州最新发布最新
  • 表格在网站后台是居中可到前台为什么不居中兰州网站定制公司
  • 网站推广方法包括哪些英文网站建设口碑好
  • 支持手机网站的空间建设电商网站需要多少钱
  • seo网站设计没营业执照怎么做网站
  • 帮别人做网站赚钱企业招聘网站
  • 软件发布网站源码网站开发如何报价
  • 中山火炬开发区建设局网站中国十大软件上市公司排名
  • 网站推广是网站建设完成之后的长期工作。wordpress同步到微信公众号
  • 中国城乡建设部人力网站首页安装百度一下
  • 宁波网站搭建公司网络营销案例可口可乐
  • 湖南智能网站建设多少钱建站宝盒 源码
  • 只使用html做简单网站安全工程师
  • 无锡cms建站wordpress 菜单结构
  • wordpress小程序扫码登录网站优化公司哪家效果好
  • 网站开发社区工程造价价格信息网
  • 昆山建筑行业网站广州网站制作选哪家
  • 做苗木选择哪个网站青岛公路建设集团有限公司网站
  • 电子商务网站设计与...网站建设方向课程
  • 福建建设局网站宁夏电力建设工程公司外部网站
  • 注册网站是哪个部门南京手机网站开发
  • 网站开发php jsp三亚市建设局官方网站