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

做曖网站路飞和女帝做h的网站

做曖网站,路飞和女帝做h的网站,国内访问wordpress,专业制作外贸网站的公司CMSIS 2.0 接口中的 Semaphore#xff08;信号量#xff09;是用于嵌入式系统中多线程或中断服务例程#xff08;ISR#xff09;之间同步和共享资源保护的重要机制。Semaphore 是一种用于控制对多个共享资源访问的同步机制。它可以被看作是一个计数器#xff0c;用于跟踪可…CMSIS 2.0 接口中的 Semaphore信号量是用于嵌入式系统中多线程或中断服务例程ISR之间同步和共享资源保护的重要机制。Semaphore 是一种用于控制对多个共享资源访问的同步机制。它可以被看作是一个计数器用于跟踪可用资源的数量。 特性 计数信号量Semaphore 可以作为计数信号量使用管理多个相同类型的资源。例如如果有多个 DMA 通道可以使用 Semaphore 来限制同时访问这些通道的数量。 生产者/消费者信号量Semaphore 也可以用于实现生产者和消费者之间的同步确保在消费者准备好之前生产者不会覆盖数据。 Semaphore在并发编程中确实可以作为一种锁来使用用于控制多个线程对共享资源的访问。首先你需要确定在任意时刻能够同时访问共享资源的最大线程数并将这个数作为初始值来创建一个Semaphore对象。这个初始值通常表示许可的数量每个许可允许一个线程访问共享资源。当线程想要访问共享资源时它应该首先调用Semaphore对象的osSemaphoreAcquire()方法。这个方法会尝试从Semaphore中获取一个许可。如果Semaphore中有可用的许可即计数器的值大于0那么线程会立即获取一个许可并继续执行。如果没有可用的许可即计数器的值为0那么线程将被阻塞直到有可用的许可。一旦线程成功获取到许可它就可以安全地访问共享资源了。在访问期间线程可以执行任何需要的操作。当线程完成对共享资源的访问后它应该调用Semaphore对象的osSemaphoreRelease()方法来释放之前获取的许可。这个方法会将Semaphore的计数器加1表示有一个新的许可可用。其他等待的线程如果有的话现在可能会获取到这个许可并继续执行。 Semaphore API API名称 说明 osSemaphoreNew 创建并初始化一个信号量 osSemaphoreGetName 获取一个信号量的名字 osSemaphoreAcquire 获取一个信号量的令牌若获取不到则会超时返回 osSemaphoreRelease 释放一个信号量的令牌但是令牌的数量不超过初始定义的的令牌数 osSemaphoreGetCount 获取当前的信号量令牌数 osSemaphoreDelete 删除一个信号量 代码编写 修改D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\BUILD.gn文件 # Copyright (c) 2023 Beijing HuaQing YuanJian Education Technology Co., Ltd # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import(//build/lite/config/component/lite_component.gni)lite_component(demo) {features [#base_00_helloworld:base_helloworld_example,#base_01_led:base_led_example,#base_02_loopkey:base_loopkey_example,#base_03_irqkey:base_irqkey_example,#base_04_adc:base_adc_example,#base_05_pwm:base_pwm_example,#base_06_ssd1306:base_ssd1306_example,#kernel_01_task:kernel_task_example,#kernel_02_timer:kernel_timer_example,#kernel_03_event:kernel_event_example,#kernel_04_mutex:kernel_mutex_example,kernel_05_semaphore_as_mutex:kernel_semaphore_as_mutex_example,] } 创建D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\kernel_05_semaphore_as_mutex文件夹 文件夹中创建D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\kernel_05_semaphore_as_mutex\kernel_semaphore_as_mutex_example.c文件D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\kernel_05_semaphore_as_mutex\BUILD.gn文件 # Copyright (c) 2023 Beijing HuaQing YuanJian Education Technology Co., Ltd # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. static_library(kernel_semaphore_as_mutex_example) {sources [kernel_semaphore_as_mutex_example.c]include_dirs [//utils/native/lite/include,//kernel/liteos_m/kal/cmsis,] } /** Copyright (c) 2023 Beijing HuaQing YuanJian Education Technology Co., Ltd* Licensed under the Apache License, Version 2.0 (the License);* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an AS IS BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/#include stdio.h #include unistd.h#include ohos_init.h #include cmsis_os2.hosThreadId_t Task1_ID; // 任务1 ID osThreadId_t Task2_ID; // 任务2 ID osSemaphoreId_t Semaphore_ID; // 信号量ID uint8_t buff[20] {0}; // 定义一个共享资源 #define TASK_STACK_SIZE 1024 #define TASK_DELAY_TIME 1 // s/*** description: 任务1* param {*}* return {*}*/ void Task1(void) {int i 0;while (1) {printf([info] enter Task 1.......\n);osSemaphoreAcquire(Semaphore_ID, osWaitForever); // 请求信号量 -1// 操作共享数据 写数据printf([info] write Buff Data: \n);for (i 0; i sizeof(buff); i) {buff[i] i;}printf(\n);osSemaphoreRelease(Semaphore_ID); // 释放信号量 1sleep(TASK_DELAY_TIME);} } /*** description: 任务2* param {*}* return {*}*/ void Task2(void) {int i 0;while (1) {printf(enter Task 2.......\n);osSemaphoreAcquire(Semaphore_ID, osWaitForever); // 请求信号量 -1// 操作共享数据 读数据printf([info] read Buff Data: \n);for (i 0; i sizeof(buff); i) {printf(%d \n, buff[i]);}printf(\n);osSemaphoreRelease(Semaphore_ID); // 释放信号量 1sleep(TASK_DELAY_TIME);} } /*** description: 初始化并创建任务* param {*}* return {*}*/ static void kernel_mutex_semaphore_example(void) {printf(Enter kernel_mutex_semaphore_example()!\n);// 创建信号量Semaphore_ID osSemaphoreNew(1, 1, NULL); // 参数: 最大计数值初始计数值参数配置if (Semaphore_ID ! NULL) {printf(ID %d, Create Semaphore_ID is OK!\n, Semaphore_ID);}osThreadAttr_t taskOptions;taskOptions.name Task1; // 任务的名字taskOptions.attr_bits 0; // 属性位taskOptions.cb_mem NULL; // 堆空间地址taskOptions.cb_size 0; // 堆空间大小taskOptions.stack_mem NULL; // 栈空间地址taskOptions.stack_size TASK_STACK_SIZE; // 栈空间大小 单位:字节taskOptions.priority osPriorityNormal; // 任务的优先级Task1_ID osThreadNew((osThreadFunc_t)Task1, NULL, taskOptions); // 创建任务1if (Task1_ID ! NULL) {printf(ID %d, Create Task1_ID is OK!\n, Task1_ID);}taskOptions.name Task2; // 任务的名字taskOptions.priority osPriorityNormal; // 任务的优先级Task2_ID osThreadNew((osThreadFunc_t)Task2, NULL, taskOptions); // 创建任务2if (Task2_ID ! NULL) {printf(ID %d, Create Task2_ID is OK!\n, Task2_ID);} } SYS_RUN(kernel_mutex_semaphore_example);使用build编译成功后使用upload进行烧录。
http://www.dnsts.com.cn/news/18326.html

相关文章:

  • 郑州网站建设排行宁夏网站建设电话
  • 广州 四合一网站开发百度浏览器主页网址
  • 程序员自己做网站怎么赚钱关键词投放
  • 外贸网站推广公司最大做网站代码用什么软件
  • 网站设计制作行业排行中国互联网协会副会长名单
  • 企业免费网站制作广东短视频推广效果好
  • 重庆网站建设 优化网站建设捌金手指下拉七
  • 建个人网站一般多少钱成都个人网站制作公司
  • 百度收录网站的图片乐清企业网站制作
  • 做教师知识网站有哪些内容wordpress 售卖插件
  • 怎样可以有自己的网站做网站都需要买什么软件
  • 网站搭建系列教程网站 制作 工具
  • 唯品会网站建设 分析报告阿克苏网站建设公司
  • 成都h5网站建设网上商店是什么
  • 昭通公司做网站大淘客官网做的网站打不开
  • 深圳网站设计合理刻西宁做网站的
  • 郑州整站网站推广工具怎么做网站数据库备份
  • 网站开发常遇到的问题有哪些昆明企业为什么要做网站
  • 西安学校部门定制网站建设公司网页设计与制作难不难
  • 怎样制作表白网站短视频代运营方案模板
  • 戴南网站建设市场调研分析报告怎么写
  • .net 获取网站域名网站后台风格
  • 关于建设部门子网站的请示天津建设工程信息网中标公告
  • 机械设计网站推荐怎么做网站首页弹幕
  • 网站变移动网站浏览器大全下载
  • 湖北做网站哪个在家做兼职网站比较好
  • 个人网站名称创意大全登陆wordpress
  • 中网建站湖南 中小企业 网站建设
  • 温州做网店的网站新变更营业执照注册号查了发现之前有备案过网站了
  • 北京微网站制作微商城网站制作