#include <osal.h>
#define USER_TASK1_PRI 12 //低优先级
#define USER_TASK2_PRI 11 //高优先级
uint32_t public_value = 0;
osal_mutex_t public_value_mutex;
//任务1:
static int user_task1_entry()
{while (1){if (true == osal_mutex_lock(public_value_mutex)){printf("\r\ntask1 : lock a mutex.\r\n");public_value += 10;printf("task1:public_value = %ld.\r\n", public_value);printf("task1:unlock a mutex.\r\n\r\n");if (true == osal_mutex_unlock(public_value_mutex)){printf("task1:unlock a mutex OK.\r\n\r\n");osal_task_sleep(10);}elseprintf("task1:Lock a mutex ERROR.\r\n");if (public_value > 60)osal_mutex_del(public_value_mutex);if (public_value > 100)break;}else{  //打印一次跳出循环printf("task1:Lock a mutex ERROR.\r\n");break;}}return 0;
}
//任务2:
static int user_task2_entry()
{while (1){if (true == osal_mutex_lock(public_value_mutex)){printf("\r\n task2 : lock a mutex.\r\n");public_value += 5;printf("task2:public_value = %ld.\r\n", public_value);if (true == osal_mutex_unlock(public_value_mutex))printf("task2:unlock a mutex OK.\r\n\r\n");elseprintf("task2:unlock a mutex ERROR.\r\n\r\n");if (public_value > 90)break;osal_task_sleep(10);}else{printf("\r\ntask2:Lock a mutex ERROR.\r\n");break;}}return 0;
}
//创建互斥锁
int standard_app_demo_main()
{/*创建互斥锁public_value_mutex*/osal_mutex_create(&public_value_mutex);/*创建任务task1*/osal_task_create("user1_task", user_task1_entry, NULL, 0x400, NULL, USER_TASK1_PRI);osal_task_create("user2_task", user_task2_entry, NULL, 0x400, NULL, USER_TASK2_PRI);
}

华为LiteOS互斥锁任务抢占-osal_semp_demo相关推荐

  1. 一文带你剖析LiteOS互斥锁Mutex源代码

    本文分享自华为云社区<LiteOS内核源码分析系列七 互斥锁Mutex>,原文作者:zhushy. 多任务环境下会存在多个任务访问同一公共资源的场景,而有些公共资源是非共享的临界资源,只能 ...

  2. LiteOS 互斥锁

    参考: [野火]物联网操作系统 LiteOS 开发实战指南 Huawei LiteOS | 中文网 5. 互斥锁 5.1 基本概念 互斥锁又叫互斥信号量,或者叫互斥量,是一种特殊的二值信号量 支持互斥 ...

  3. 华为应用锁退出立即锁_面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景...

    前言 生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来.电动车被偷等等. 但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就 ...

  4. 关抢占 自旋锁_互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

    前言 生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来.电动车被偷等等. 但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就 ...

  5. LiteOS内核教程05 | 互斥锁(共享资源保护)

    上百篇原创人工智能系列教程,从理论到实战,手把手带你掌握人工智能,点击☞这里☜进入传送门~ 1. LiteOS的互斥锁 1.1. 互斥锁 在多任务环境下,往往存在多个任务竞争同一共享资源的应用场景,互 ...

  6. 基于STM32F103移植华为LiteOS物联网系统

    基于STM32F103移植华为LiteOS物联网系统 本实验是通过学习野火的<物联网操作系统 LiteOS开发实战指南>参考学习的. 1.移植前的准备 LiteOS 的源码可从 LiteO ...

  7. 华为LiteOS操作系统基础知识入门与内核移植

    LiteOS操作系统是华为在2015年发布的一个轻量级的面向物联网的操作系统,同时也是华为物联网1+2+1物联网解决方案的组成部分,此操作系统具备零配置,自发现,自组网的特点,让LiteOS的终端物联 ...

  8. java锁(公平锁和非公平锁、可重入锁(又名递归锁)、自旋锁、独占锁(写)/共享锁(读)/互斥锁、读写锁)

    前言 本文对Java的一些锁的概念和实现做个整理,涉及:公平锁和非公平锁.可重入锁(又名递归锁).自旋锁.独占锁(写)/共享锁(读)/互斥锁.读写锁 公平锁和非公平锁 概念 公平锁是指多个线程按照申请 ...

  9. linux进程--自旋锁和互斥锁的区别(十四)

    自旋锁(Spin lock) 自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是 否该自旋锁的保持者已经释放了锁,"自旋&qu ...

最新文章

  1. python怎么打开文档_python打开怎么运行
  2. javascript面向对象学习笔记(一)——继承
  3. Office Word 2007下管理参考文献(比2003版的交叉引用神马的轻松多拉)(转)
  4. H.264边缘块进行帧内预测时,上边缘和左边缘块的预测情况。
  5. 使用ycsb测试cassandra
  6. Java中高效判断数组中是否包含某个元素
  7. 万物互联、应用现代化、云原生新范式,华为云为数字化转型提供最优解
  8. 函数返回结构体指针_9.3 结构体指针
  9. python查看数据类型type_python——获取数据类型:type()、isinstance()的使用方法:...
  10. 批量梯度下降算法BGD
  11. 同大取大同小取小口诀图解_七年级下册数学课本内容归纳汇总
  12. 汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用
  13. C# RichTextBox 制作文本编辑器
  14. 第三篇第九章火灾自动报警系统
  15. 如何24小时实时监控网站访问状态?
  16. 300美元课程就能帮你获得93000美元的薪水,高等教育的路在何方?
  17. 如何提升程序员的代码编写能力
  18. 2021年高考成绩查询达州,四川省达州市2021年普通高校招生网上报名入口
  19. FPGA verilog实现全减器
  20. 【字节跳动】头条竞价广告|商业产品经理实习生|一面凉经

热门文章

  1. 如何定义python的全局变量
  2. 我们都是在黑暗海洋上行驶的孤独船只
  3. 网友盘点囧囧奥运记者的弱智提问
  4. HTML-常见的特殊字符,特殊字符的转义,和号(且符号)、小于号、大于号、乘、除、人民币符号、版权符等
  5. 介绍一个数据血缘的项目 OpenLineage
  6. 使用YOLOV5训练自己的数据集(以王者荣耀为例)
  7. 计算机辅助教育cbe不包括,计算机辅助教育复习资料之一
  8. Android仿虾米音乐播放器之自定义进度条seekbar
  9. 处理头像将头像变圆背景透明
  10. 校运动会mysql索引_(定稿)校运动会数据库设计(完整版)