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

做网站用的系统中国旺旺(00151) 股吧

做网站用的系统,中国旺旺(00151) 股吧,适合企业做外贸的几个网站,有没有什么做热力图的图表网站递归信号量 一、概述 互斥量的使用比较单一,因为它是信号量的一种,并且它是以锁的形式存在。在初始化的时候,互斥量处于开锁的状态,而被任务持有的时候则立刻转为闭锁的状态。 递归类型的互斥量可以被拥有者重复获取。拥有互斥量…

递归信号量

一、概述

互斥量的使用比较单一,因为它是信号量的一种,并且它是以锁的形式存在。在初始化的时候,互斥量处于开锁的状态,而被任务持有的时候则立刻转为闭锁的状态。

递归类型的互斥量可以被拥有者重复获取。拥有互斥量的任务必须调用API函数xSemaphoreGiveRecursive()将拥有的递归互斥量全部释放后,该信号量才真正被释放。比如,一个任务成功获取同一个互斥量5次,那么这个任务要将这个互斥量释放5次之后,其它任务才能获取到它。递归互斥信号量,其实就是互斥信号量里面嵌套互斥信号量,示例如下:

static void vTaskMsgPro(void *pvParameters){TickType_t xLastWakeTime;const TickType_t xFrequency = 1500;/* 获取当前的系统时间 */xLastWakeTime = xTaskGetTickCount();while(1){/* 递归互斥信号量,其实就是互斥信号量里面嵌套互斥信号量 */xSemaphoreTakeRecursive(xRecursiveMutex, portMAX_DELAY);{/* -------------------------------------- *///假如这里是被保护的资源,第1层被保护的资源,用户可以在这里添加被保护资源/* ---------------------------------------------------------------------------- */printf("任务vTaskMsgPro在运行,第1层被保护的资源,用户可以在这里添加被保护资源\r\n");/* 第1层被保护的资源里面嵌套被保护的资源 */xSemaphoreTakeRecursive(xRecursiveMutex, portMAX_DELAY);{/* ------------------------------------------------------------------------ *///假如这里是被保护的资源,第2层被保护的资源,用户可以在这里添加被保护资源/* ------------------------------------------------------------------------ */printf("任务vTaskMsgPro在运行,第2层被保护的资源,用户可以在这里添加被保护资源\r\n");/* 第2层被保护的资源里面嵌套被保护的资源 */xSemaphoreTakeRecursive(xRecursiveMutex, portMAX_DELAY);{printf("任务vTaskMsgPro在运行,第3层被保护的资源,用户可以在这里添加被保护资源\r\n");}xSemaphoreGiveRecursive(xRecursiveMutex);}xSemaphoreGiveRecursive(xRecursiveMutex);    }xSemaphoreGiveRecursive(xRecursiveMutex);/* vTaskDelayUntil是绝对延迟,vTaskDelay是相对延迟。*/vTaskDelayUntil(&xLastWakeTime, xFrequency);}}

二、配置

使能递归互斥量,详细文件在FreeRTOS.h。

文件路径:FreeRTOS.h

#ifndef configUSE_RECURSIVE_MUTEXES#define configUSE_RECURSIVE_MUTEXES 1#endif

三、函数接口

1.创建递归互斥量

#if((configSUPPORT_DYNAMIC_ALLOCATION==1) && (configUSE_RECURSIVE_MUTEXES ==1))#define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex( queueQUEUE_TYPE_RECURSIVE_MUTEX )#endif

参数:无

返回值:

如果创建成功则返回一个递归互斥量句柄,用于访问创建的递归互斥量。如果创建不成功则返回 NULL。

2.获取递归互斥量

#if( configUSE_RECURSIVE_MUTEXES == 1 )#define xSemaphoreTakeRecursive( xMutex, xBlockTime )xQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) )#endif

参数:

  1. tick(即系统节拍周期)。如果

宏 INCLUDE_vTaskSuspend 定义为 1 且形参 xTicksToWait 设置为portMAX_DELAY ,则任务将一直阻塞在该递归互斥量上(即没有超时时间)。

返回值:

获取成功则返回 pdTRUE,在超时之前没有获取成功则返回 errQUEUE_EMPTY。

3.释放递归互斥量

#if( configUSE_RECURSIVE_MUTEXES == 1 )#define xSemaphoreGiveRecursive( xMutex ) \xQueueGiveMutexRecursive( ( xMutex ) )#endif

参数:

返回值:

成功,pdPASS

失败,pdFAIL

四、示例代码

1.freertos.cstatic void app_task1(void* pvParameters){for(;;){//获取递归互斥信号量xSemaphoreTakeRecursive(MutexSemaphore, portMAX_DELAY);{printf("app_task1 is running 1...\r\n");//获取递归互斥信号量xSemaphoreTakeRecursive(MutexSemaphore, portMAX_DELAY);{printf("app_task1 is running 2...\r\n");//获取递归互斥信号量xSemaphoreTakeRecursive(MutexSemaphore, portMAX_DELAY);{printf("app_task1 is running 3...\r\n");}//释放递归互斥信号量xSemaphoreGiveRecursive(MutexSemaphore); }//释放递归互斥信号量  xSemaphoreGiveRecursive(MutexSemaphore);  }  //释放递归互斥信号量xSemaphoreGiveRecursive(MutexSemaphore);  vTaskDelay(300);  }static void app_task2(void* pvParameters){for(;;){//获取递归互斥信号量xSemaphoreTakeRecursive(MutexSemaphore, portMAX_DELAY);{printf("app_task2 is running 1...\r\n");//获取递归互斥信号量xSemaphoreTakeRecursive(MutexSemaphore, portMAX_DELAY);{printf("app_task2 is running 2...\r\n");//获取递归互斥信号量xSemaphoreTakeRecursive(MutexSemaphore, portMAX_DELAY);{printf("app_task2 is running 3...\r\n");}//释放递归互斥信号量xSemaphoreGiveRecursive(MutexSemaphore); }//释放递归互斥信号量  xSemaphoreGiveRecursive(MutexSemaphore);  }  //释放递归互斥信号量xSemaphoreGiveRecursive(MutexSemaphore);  vTaskDelay(200);}

演示

http://www.dtcms.com/wzjs/401990.html

相关文章:

  • 网站被百度收录互联网营销成功案例
  • 专业的网页设计服务公司独立站谷歌seo
  • 网站怎么让百度收录一张图做封面小红书怎么做关键词排名优化
  • 贵州快速整站优化网站的设计流程
  • 网站做seo优化有什么优势想要网站导航正式推广
  • 推荐个网站好吗山东今日热搜
  • wordpress 主题详解搜索引擎排名优化方法
  • 软件公司网站建设seo待遇
  • 钓鱼网站制作步骤搜索引擎优化答案
  • 怎么做几个版面的网站百度网盘下载速度慢破解方法
  • 做网站能带来什么问题线上推广方案怎么做
  • 做餐饮网站的目的与意义怎样在百度上发布自己的信息
  • 公司网站建设项目详情营业推广策略
  • 镇江网站制作优化合肥网站推广优化公司
  • 外贸网站建设及推广互联网推广话术
  • 精美驾校企业网站模板最近的新闻事件
  • 大连大型网站制作公司包头seo
  • 药品加工厂做网站百度推广的步骤
  • 软件技术跟网站开发有关系吗关键词优化软件哪家好
  • 可以做婚礼鲜花布置的网站武汉seo人才
  • 郑州网站建设汉狮网络营销的未来6个发展趋势
  • 优质的响应式网站建设百度指数分析数据
  • web网站开发部署优化外包服务公司
  • 北京网页设计与制作公司搜索引擎优化的方法有哪些
  • 南京网站建设公司 w7月新闻大事件30条
  • 网站建设 提成福州百度开户多少钱
  • 做网站设计都需要什么小程序制作费用一览表
  • 长春商城网站建设电商引流推广方法
  • 网站怎么做流量互换怎么在百度制作自己的网站
  • 本网站服务器深圳专门做seo的公司