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

广东网站建设seo优化中国公关公司排行榜

广东网站建设seo优化,中国公关公司排行榜,国家企业公示平台官网,苏州淘宝运营培训一、概念 在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步, 而互斥型信号量用于资源保护。 互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现 象。 …

一、概念
 

在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步,
而互斥型信号量用于资源保护。
互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现
象。
优先级反转:
系统中有 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.yayakq.cn/news/415409/

相关文章:

  • 郑州做网站优化地址学网站开发培训
  • 自己建设个人网站要花费多少商城官网
  • 临海市住房和城乡建设规划局网站中小型企业网站的设计与开发
  • 如何建立网站?哪一款软件可以自己做网站
  • cae毕业设计代做网站七牛上传wordpress
  • 北京的制作网站的公司在哪里深圳市住房建设与保障局官方网站
  • 深圳网站建设公司哪家可以建app深圳软件公司扶持政策
  • dell网站的网站设计特色wamp个人网站开发来源
  • 群晖nas 做网站做a手机视频在线观看网站
  • 杭州鼎易科技做网站太坑网站网站开发建设
  • 网站 ip pv郑州三附院不孕不育科专家
  • 青岛公司网站制作网页 制作
  • 怎样向搜索引擎提交网站怎么做网站网站不被发现
  • 办网站需流程网站设计要如何做支付功能
  • 网站建设 培训 南充做生鲜的网站
  • 网站大数据怎么做的昆明做网站建设
  • 宠物之家网站开发重庆一品建设集团有限公司网站
  • 淮安建设工程协会网站查询系统网站设计过时
  • 网站百度地图标注美食网页设计的制作过程
  • 云起时网站建设深圳建设网站龙岗网站建设
  • 网站建设视频教程视觉传达设计作品集
  • 亚马逊网站建设性提议seo和sem推广
  • 建设银行全球门户网站单位网站建设与管理
  • 微信推广网站p2p网贷网站开发
  • 网站管理助手4.0破解做搜狗网站点
  • 网站建设宽度一般都是多少钱打开手机网站速度慢
  • 生物科技 网站模板下载无锡2019网站建设报价清单
  • 怎样做28网站代理一家只做性价比的网站
  • 创建公司官网seo属于什么职位类型
  • 网站设计开发软件网页ui设计培训