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

怎样建设数字中国西安优化外

怎样建设数字中国,西安优化外,湛江网站建设服务,云端智能建站系统一、概念 在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步, 而互斥型信号量用于资源保护。 互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现 象。 …

一、概念
 

在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步,
而互斥型信号量用于资源保护。
互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现
象。
优先级反转:
系统中有 3 个不同优先级的任务 H/M/L ,最高优先级任务 H 和最低优先级任务 L 通过 信号量机制,共享资源。目前任务L 占有资源,锁定了信号量, Task H 运行后将被阻塞,直到 Task L释放信号量后, Task H 才能够退出阻塞状态继续运行。但是 Task H 在等待 Task L 释放信号量的过程中,中等优先级任务M 抢占了任务 L ,从而延迟了信号量的释放时间,导致 Task H 阻塞了更长时 间,这种现象称为优先级倒置或反转。
优先级继承:当一个互斥信号量正在被一个低优先级的任务持有时, 如果此时有个高优先级的任
务也尝试获取这个互斥信号量,那么这个高优先级的任务就会被阻塞。 不过这个高优先级的任务
会将低优先级任务的优先级提升到与自己相同的优先级。
优先级继承并不能完全的消除优先级翻转的问题,它只是尽可能的降低优先级翻转带来的影响。

二、没有使用互斥量的时候

 配置中、高、低三个优先级

  

  osThreadDef(TaskH, StartTaskH, osPriorityAboveNormal, 0, 128);TaskHHandle = osThreadCreate(osThread(TaskH), NULL);osThreadDef(TaskM, StartTaskM, osPriorityNormal, 0, 128);TaskMHandle = osThreadCreate(osThread(TaskM), NULL);osThreadDef(TaskL, StartTaskL, osPriorityBelowNormal, 0, 128);TaskLHandle = osThreadCreate(osThread(TaskL), NULL);void StartTaskH(void const * argument)
{for(;;){xSemaphoreTake(myBinarySemHandle,portMAX_DELAY);printf("TaskH:我开始进入厕所,发功中。。\r\n");HAL_Delay(1000);printf("TaskH:我上完厕所了,真舒服。。。\r\n");xSemaphoreGive(myBinarySemHandle);osDelay(1000);}
}void StartTaskM(void const * argument)
{for(;;){printf("TaskM:我就是为了占用资源,带女朋友兜风\r\n");osDelay(1000);}
}void StartTaskL(void const * argument)
{for(;;){xSemaphoreTake(myBinarySemHandle,portMAX_DELAY);printf("TaskL:我开始进入厕所,发功中。。\r\n");HAL_Delay(3000);printf("TaskL:我上完厕所了,真舒服。。。\r\n");xSemaphoreGive(myBinarySemHandle);osDelay(1000);}
}

 

 

互斥量实验(接上半部分)

首先删除二值信号量

 创建互斥量

 

void MX_FREERTOS_Init(void) {osMutexDef(myMutex);myMutexHandle = osMutexCreate(osMutex(myMutex));osThreadDef(TaskH, StartTaskH, osPriorityAboveNormal, 0, 128);TaskHHandle = osThreadCreate(osThread(TaskH), NULL);osThreadDef(TaskM, StartTaskM, osPriorityNormal, 0, 128);TaskMHandle = osThreadCreate(osThread(TaskM), NULL);osThreadDef(TaskL, StartTaskL, osPriorityBelowNormal, 0, 128);TaskLHandle = osThreadCreate(osThread(TaskL), NULL);}void StartTaskH(void const * argument)
{for(;;){xSemaphoreTake(myMutexHandle,portMAX_DELAY);//句柄变为myMutexHandleprintf("TaskH:我开始进入厕所,发功中。。\r\n");HAL_Delay(1000);printf("TaskH:我上完厕所了,真舒服。。。\r\n");xSemaphoreGive(myMutexHandle);osDelay(1000);}}void StartTaskM(void const * argument)
{for(;;){printf("TaskM:我就是为了占用资源,带女朋友兜风\r\n");osDelay(1000);}}void StartTaskL(void const * argument)
{for(;;){xSemaphoreTake(myMutexHandle,portMAX_DELAY);printf("TaskL:我开始进入厕所,发功中。。\r\n");HAL_Delay(3000);printf("TaskL:我上完厕所了,真舒服。。。\r\n");xSemaphoreGive(myMutexHandle);osDelay(1000);}}

运行结果:

 通过引入互斥量,可以实现资源的保护功能。

http://www.15wanjia.com/news/11589.html

相关文章:

  • 网站设计的总结什么是优化设计
  • 深圳品牌网站设计公司价格网站优化的方法
  • 武汉大型网站建设网络营销乐云seo
  • 淘宝做网站的多少钱seo教程seo官网优化详细方法
  • 广昌网站建设搜索推广公司
  • 中心网站建设广告公司简介
  • 微网站素材网站seo优化价格
  • 做一个官方网站多少钱关键词挖掘ppt
  • 没有网站做优化电脑培训学校在哪里
  • 基层政府门户网站建设企业seo顾问公司
  • 加强政府信息公开和网站建设网络营销策划书8000字
  • 微信微网站开发策划广告投放方案
  • 动态网站设计和管理怎么做自己的网站
  • 网页提示站点不安全网络营销推广策略
  • 珠海十大网站建设公司温州网站建设
  • 广东省住房建设部网站googleseo优化
  • 网站开发过程百度流量
  • librestock网站下载电商seo是什么意思
  • 全网营销推广有哪些平台长春百度seo公司
  • 余姚专业网站建设公司google play官网
  • wordpress 帮助 主题东莞网站优化关键词排名
  • 阿里云免费网站备案站长工具是什么
  • 哪些网站容易被百度收录seo包年服务
  • 免费建网站无广告如何进行网站推广
  • 电商型网站设计企业短视频营销推广方式
  • 做网站最好软件抖音seo推广
  • 网站备案信息学校网站模板
  • 专门做橱柜衣柜效果图的网站知乎营销平台
  • 外贸做那种网站全网营销渠道
  • 网站开发和手机开发哪个好厦门网站建设