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

苏州企业网站推广同时部署WordPress和django

苏州企业网站推广,同时部署WordPress和django,网站建设丶金手指C排名15,关于网站建设的文章freertos信号量之二值信号量 简介例程 简介 FreeRTOS的二值信号量(Binary Semaphore)是用于实现进程间同步和临界资源保护的重要工具。以下是一些二值信号量的常用函数及其说明: 1)xSemaphoreCreateBinary() 创建一个二值信号量…

freertos信号量之二值信号量

    • 简介
    • 例程

简介

FreeRTOS的二值信号量(Binary Semaphore)是用于实现进程间同步和临界资源保护的重要工具。以下是一些二值信号量的常用函数及其说明:

1)xSemaphoreCreateBinary()
创建一个二值信号量。该函数接受一个无符号整型参数,用于指定信号量的初始值。如果初始值为0,则表示信号量未被占用;否则,表示信号量已被占用。

2)xSemaphoreTake(SemaphoreHandle_t xSemaphore, portTickType xBlockTime)
获取二值信号量。该函数会尝试获取信号量,如果信号量可用,则获取成功并立即返回;否则,如果信号量不可用,函数会阻塞调用任务,直到信号量可用或超时。xBlockTime参数指定阻塞时间,单位为系统时钟节拍数。

3)xSemaphoreGive(SemaphoreHandle_t xSemaphore)
释放二值信号量。该函数会将信号量的值置为1,表示信号量可用。如果有任务正在等待该信号量,则其中一个任务将被唤醒并继续执行。

4)xSemaphoreGetCount(SemaphoreHandle_t xSemaphore)
获取二值信号量的当前值。该函数返回信号量的当前值,即0或1。

5)xSemaphoreDelete(SemaphoreHandle_t xSemaphore)
删除一个二值信号量。该函数会释放与信号量关联的资源,并使信号量无效。

使用注意点
二值信号量只有两个状态,0和1,因此只能用于简单的同步和资源保护场景。
二值信号量不支持优先级继承,因此不会出现优先级反转的问题。
在释放信号量时,需要注意保证调用xSemaphoreGive()函数的代码能够正确执行,否则可能导致信号量无法释放而引起死锁。

例程

#include <FreeRTOS.h>  
#include <task.h>  // 定义二值信号量的初始状态为0  
static SemaphoreHandle_t binarySemaphore = 0;  void vATask( void * pvParameters )  
{  portTickType xDelay;  for( ;; )  {  // 任务进入临界区,保护临界资源  xSemaphoreTake( binarySemaphore, ( portTickType ) 0 ); // 等待信号量变为1  // 临界区代码,保护临界资源  // ...  // 释放信号量,使信号量状态变为0,允许其他任务或中断服务程序进入临界区  xSemaphoreGive( binarySemaphore );  // 延时一定时间后再次进入临界区  xDelay = pdMS_TO_TICKS( 1000 ); // 延时1秒  portYIELD_WITHIN( xDelay );  }  
}  void vAnInterruptServiceRoutine( void )  
{  
// 中断服务程序中获取二值信号量,保护中断服务程序的代码不被打断  
xSemaphoreTakeFromISR( binarySemaphore, &xHigherPriorityTaskWoken );  
// 中断服务程序代码,保护中断服务程序的代码不被打断  
// ...  
// 中断服务程序释放二值信号量,允许任务进入临界区  
xSemaphoreGiveFromISR( binarySemaphore, &xHigherPriorityTaskWoken );  
}

在上述示例中,任务vATask首先进入临界区并等待二值信号量。当二值信号量的状态为0时,任务会阻塞等待。一旦任务进入临界区,就可以执行保护临界资源的代码。当任务完成临界区代码后,释放二值信号量,使其状态变为0,允许其他任务或中断服务程序进入临界区。

在中断服务程序中,也可以使用二值信号量来保护中断服务程序的代码不被打断。当低优先级的中断发生时,中断服务程序会获取二值信号量并快速处理少部分工作。一旦中断服务程序完成工作,就会释放二值信号量,允许高优先级的中断或任务进入临界区。

http://www.yayakq.cn/news/432577/

相关文章:

  • 微信手机网站源码怎么才能知道网站是谁做的
  • 招聘网站有哪些seo自学教程
  • 网站开发任务书模板网站开发团队名字
  • 南京企业网站做优化wordpress图标不显示
  • 烟台响应式网站建设黄冈网站推广软件免费下载
  • 绵阳住房和城乡建设局网站wordpress免代码分享到
  • 小学生做的网站wordpress数据收集
  • 做牙网站wordpress js 插件
  • 营销型网站建设开发价格友情链接什么意思
  • 在线写作网站深圳市建设管理中心网站
  • 行政审批网站开发文档微信小程序线上商城怎么做
  • 网站可以多个域名吗电子商务网站的整个建设流程
  • 江西建设质量安全监督网站小程序开发制作费用
  • 做资讯的网站网站开发策划书
  • 视频网站logo怎么做的建网上商城的第三方网站哪个好
  • 最新购物网站建设框架爱情树表白网页在线制作
  • 南充网站建设多少钱东莞网络推广运营公司
  • 永久建站平台17一起做网站app
  • 汕头网站建设模板制作电影网站源码access
  • 深圳建设银行宝安支行网站赣州做网站多少钱
  • 深圳最好的网站开发公司电话wordpress 获取文章文字
  • 浙江省建设厅老网站wordpress5.1.1版本汉化
  • 求一个手机能看的2022淘宝网站优化实例
  • 常熟网站手机维修网站那个公司做的
  • 潍坊网站建设 潍坊做网站深圳网站优化网站
  • 做二手房的端口网站wordpress手机版 mp3
  • 网站建设工作室怎么开引擎搜索优化
  • 网站排行榜上升代码博客网站注册
  • 有哪些推广网站北镇网站建设
  • 湖南营销型网站建设 j磐石网络交换链接的其它叫法是