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

17.zwd一起做网站模具外贸网站建设

17.zwd一起做网站,模具外贸网站建设,网站做竞价,户型图装修设计图app文章目录 前言一、互斥量与二进制信号量二、优先级反转与优先级继承三、递归锁 前言 通过学习上一章互斥量理论基础#xff0c;这一章我们来做一些实验进行验证。 一、互斥量与二进制信号量 互斥量使用和二进制信号量类似 互斥量有优先级继承功能#xff0c;二进制信号量没有… 文章目录 前言一、互斥量与二进制信号量二、优先级反转与优先级继承三、递归锁 前言 通过学习上一章互斥量理论基础这一章我们来做一些实验进行验证。 一、互斥量与二进制信号量 互斥量使用和二进制信号量类似 互斥量有优先级继承功能二进制信号量没有Give/Take函数完全一样二进制信号量的初始值是0互斥量的初始值是1 二、优先级反转与优先级继承 首先创建三个优先级不同的任务 xTaskCreate( vLPTask, LPTask, 1000, NULL, 1, NULL );xTaskCreate( vMPTask, MPTask, 1000, NULL, 2, NULL );xTaskCreate( vHPTask, HPTask, 1000, NULL, 3, NULL );创建互斥量/二进制信号量 SemaphoreHandle_t xLock; // xLock xSemaphoreCreateBinary( );xLock xSemaphoreCreateMutex( );xSemaphoreGive(xLock);三个优先级不同的任务处理不同事情验证二进制信号量的优先级反转和互斥量的优先级继承功能 /*-----------------------------------------------------------*/ static void vLPTask( void *pvParameters ) {const TickType_t xTicksToWait pdMS_TO_TICKS( 10UL ); uint32_t i;char c A;printf(LPTask start\r\n);/* 无限循环 */for( ;; ){ flagLPTaskRun 1;flagMPTaskRun 0;flagHPTaskRun 0;/* 获得互斥量/二进制信号量 */xSemaphoreTake(xLock, portMAX_DELAY);/* 耗时很久 */printf(LPTask take the Lock for long time);for (i 0; i 26; i) {flagLPTaskRun 1;flagMPTaskRun 0;flagHPTaskRun 0;printf(%c, c i);}printf(\r\n);/* 释放互斥量/二进制信号量 */xSemaphoreGive(xLock);vTaskDelay(xTicksToWait);} }static void vMPTask( void *pvParameters ) {const TickType_t xTicksToWait pdMS_TO_TICKS( 30UL ); flagLPTaskRun 0;flagMPTaskRun 1;flagHPTaskRun 0;printf(MPTask start\r\n);/* 让LPTask、HPTask先运行 */ vTaskDelay(xTicksToWait);/* 无限循环 */for( ;; ){ flagLPTaskRun 0;flagMPTaskRun 1;flagHPTaskRun 0;} }static void vHPTask( void *pvParameters ) {const TickType_t xTicksToWait pdMS_TO_TICKS( 10UL ); flagLPTaskRun 0;flagMPTaskRun 0;flagHPTaskRun 1;printf(HPTask start\r\n);/* 让LPTask先运行 */ vTaskDelay(xTicksToWait);/* 无限循环 */for( ;; ){ flagLPTaskRun 0;flagMPTaskRun 0;flagHPTaskRun 1;printf(HPTask wait for Lock\r\n);/* 获得互斥量/二进制信号量 */xSemaphoreTake(xLock, portMAX_DELAY);flagLPTaskRun 0;flagMPTaskRun 0;flagHPTaskRun 1;/* 释放互斥量/二进制信号量 */xSemaphoreGive(xLock);} }/*-----------------------------------------------------------*/二进制信号量 实现优先级反转中优先级先于高优先级执行 互斥量实现优先级继承 三、递归锁 创建递归锁 /* 递归锁句柄 */ SemaphoreHandle_t xMutex;xMutex xSemaphoreCreateRecursiveMutex( );创建2个任务: 一个上锁, 另一个自己监守自盗(开别人的锁自己用) xTaskCreate( vTakeTask, Task1, 1000, NULL, 2, NULL );xTaskCreate( vGiveAndTakeTask, Task2, 1000, NULL, 1, NULL );/* 启动调度器 */vTaskStartScheduler();任务描述 /*-----------------------------------------------------------*/ static void vTakeTask( void *pvParameters ) {const TickType_t xTicksToWait pdMS_TO_TICKS( 100UL ); BaseType_t xStatus;int i;/* 无限循环 */for( ;; ){ /* 获得递归锁: 上锁 */xStatus xSemaphoreTakeRecursive(xMutex, portMAX_DELAY);printf(Task1 take the Mutex in main loop %s\r\n, \(xStatus pdTRUE)? Success : Failed);/* 阻塞很长时间, 让另一个任务执行, * 看看它有无办法再次获得递归锁 */vTaskDelay(xTicksToWait);for (i 0; i 10; i){/* 获得递归锁: 上锁 */xStatus xSemaphoreTakeRecursive(xMutex, portMAX_DELAY);printf(Task1 take the Mutex in sub loop %s, for time %d\r\n, \(xStatus pdTRUE)? Success : Failed, i);/* 释放递归锁 */xSemaphoreGiveRecursive(xMutex);}/* 释放递归锁 */xSemaphoreGiveRecursive(xMutex);} }static void vGiveAndTakeTask( void *pvParameters ) {const TickType_t xTicksToWait pdMS_TO_TICKS( 10UL ); BaseType_t xStatus;/* 尝试获得递归锁: 上锁 */xStatus xSemaphoreTakeRecursive(xMutex, 0);printf(Task2: at first, take the Mutex %s\r\n, \(xStatus pdTRUE)? Success : Failed);/* 如果失败则监守自盗: 开锁 */if (xStatus ! pdTRUE){/* 无法释放别人持有的锁 */xStatus xSemaphoreGiveRecursive(xMutex);printf(Task2: give Mutex %s\r\n, \(xStatus pdTRUE)? Success : Failed);}/* 如果无法获得, 一直等待 */xStatus xSemaphoreTakeRecursive(xMutex, portMAX_DELAY);printf(Task2: and then, take the Mutex %s\r\n, \(xStatus pdTRUE)? Success : Failed);/* 无限循环 */for( ;; ){ /* 什么都不做 */vTaskDelay(xTicksToWait);} } /*-----------------------------------------------------------*/ 结果
http://www.dnsts.com.cn/news/234048.html

相关文章:

  • 网站 推广网站的缩略图
  • 秦皇岛哪家做网站好为网站生成rss
  • 网站建设费 什么科目老河口网站建设
  • wordpress网站地图提交网站开发后端有哪些
  • 怎么黑人网站织梦的网站数据还原怎么做
  • 阻止网站查到访问者ip适合女生的计算机专业有哪些
  • 平昌城乡与住房建设部网站韶关住房和城乡建设部网站
  • 万达做的电商网站嘉定网站设计怎么样
  • 江门网站推广技巧电脑培训班一般要学多久
  • 网站设计布局98同城招聘网信息附近
  • 网站制作经费预算表商城网站静态模板下载
  • 公司做一个网站如何定位国内平台有哪些
  • 做网站那个公司比较好有经验的永州网站建设
  • 福建建设厅网站工程履约保险常州微信网站建设价位
  • 企业管理平台系统网站佛山知名营销网站开发
  • wordpress装修套餐网站源码托者设计吧官网
  • 亚马逊的海外网站怎么做在线学习网站建设
  • 网站访问速度 云组机在线网站设计
  • 如何用kali做网站渗透手机3d动画制作软件
  • 哪个市文化和旅游网站做的好山东网络推广优化排名
  • 英文建站平台有哪些设计师招聘网
  • dw怎么做网站标题图标网页建站的费用
  • 如何做英文网站外链建筑模板规格
  • 网站后台添加投票系统游戏网站建设策划方案模板
  • 查网站是否正规黄冈网站推广下载
  • 免费申请商城网站wordpress部分图片不显示
  • 买了个网站后怎么做甘肃省城乡建设网站
  • 网站开发商务合同有做网站维护的
  • 3d网站开发内蒙营销型网站建设
  • 建站流程网站上线青岛中英网站建设