- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 【多线程】优先级反转与解决办法
优先级反转,是指在使用信号量时,可能会出现的这样一种的现象,即:高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。-- 从现象上来看,好像是中优先级的任务比高优先级任务具有更高的优先权。具体来说:当高优先级任务正等待信号量(此信号量被一个低优先级任务拥有着)的时候,一个介于两个任务优先之间的中等优先级任务开始执行——这就会导致一个高优先级任务在等待一个低优先级任务,而低优先级任务却无法执行类似的情形发生。
2023-08-25 16:48:01
466
原创 【嵌入式C语言】嵌入式程序中volatile关键字的作用
当一个变量被volatile修饰时,就说明这个变量可能会在任何时刻改变,这样,编译器就不会在编译阶段去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用曾经读取后保存在寄存器里的备份。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量在程序的其他位置被更新了的话,将出现不一致的现象。
2023-08-17 13:23:02
875
原创 【从零开始的状态机漫谈1】万物之始的语言
有限自动机(Finite State Machine),又叫状态机是整个计算机学科倒数第二层的基石;倒数第一层就是大家所熟悉的组合逻辑(Combinational logic)——如果说组合逻辑是没啥灵魂的细胞的话,有限自动机就是第一种“能够任意描述思维逻辑”的神兽大乌龟——整个计算机学科都驮在它的背上。
2023-06-27 14:49:08
167
原创 【嵌入式C语言】通过减少if-else来提高程序可读性
为什么我们写的代码都是 if-else?程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个 if-else可随着代码逻辑不断完善和业务的瞬息万变:比如需要对入参进行类型和值进行判断;这里要判断下对象是否为 null;不同类型执行不同的流程。落地到具体实现只能不停地加 if-else 来处理,渐渐地,代码变得越来越庞大,函数越来越长,文件行数也迅速突破上千行,维护难度也越来越大,到后期基本达到一种难以维护的状态。虽然我们都很不情愿写出满屏 if-else 的代码,可逻
2021-12-03 11:30:24
734
原创 【嵌入式C语言】const关键字不会用?,那你需要这篇文章
hello 你好呀!,我是aoz,今天我们来一起研究const关键字废话不多说,我们进入正题 有需要的同学可以自行跳转哟~文章目录1.const 怎么用2. const与指针1.const 怎么用const 是C语言的一个关键字const 关键字是把变量变为一个只读的变量,绝对不是将这个变量变为常量。也就是说经过const 修饰的变量成为只读的变量之后,那么这个变量就只能作为右值(只能赋值给别人),绝对不能成为左值(不能接收别人的赋值)。而 C++ 则是将 const 修饰的常量变为一个真正的
2021-12-02 15:49:02
299
原创 手把手带你看《C Primer Plus》第8章 字符输入输出和输入验证
手把手带你看《C Primer Plus》第8章 字符输入输出和输入验证
2021-12-01 15:40:46
345
原创 【嵌入式C语言】数据类型基础知识、溢出、可移植性
数据类型在C语言中有6种基本数据类型:short、int、long、float、double、char整型:short int、int、long int浮点型:float、double字符类型:char提到数据类型,就不得不提数据类型的长度和数据类型的数值存储范围。类型说明32位系统字节数64位系统字节数取值范围char字符型11-128~127short短整型22-32768~32767int整型44-2147483
2021-11-01 20:18:03
718
原创 【读书】C陷阱和缺陷精华浓缩
文章目录第一章 词法“陷阱”1.1 =不同于==1.2 & 和 | 不同于 && 和 ||1.3 词法分析中的“贪心法”1.4 整型常量1.5 字符与字符串第二章 语法“陷阱”2.1 理解函数声明2.2 运算符的优先级问题2.3 注意作为语句结束标志的分号2.4 switch 语句2.5 函数调用2.6 “悬挂”else引发的问题第三章 语义“陷阱”3.1 指针与数组3.2 非数组的指针3.3 作为参数的数组声明3.4 避免“举隅法”3.5 空指针并非空字符串3.6 边界计算与不对称
2021-10-04 23:46:26
435
原创 【嵌入式C语言】共用体Union的使用指南
1.什么是共用体共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。typedef struct { char A; char B; char C; char D;}ST;typedef union{ char A; char B; char C; char D;}UN;同样的定义结构体和共用体,但是在内存
2021-09-17 11:50:21
1608
原创 【嵌入式C语言】可变参数 va_start、va_arg、va_end、va_list、stdarg.h 库详解
可变参数详解printf( )是我们在编程中避不开的函数,之前我们研究了printf( )的实现原理,初步了解了printf( )函数在库中是借用putchar( )来进行实现输出的,但是还有一个问题我们上一篇文章没有解决,那就是printf( )中的可变参数是怎么实现的呢,如何去使用可变参数完成我们自己的输出函数呢?让我们再来看一眼printf( )的长相,在stdio.h文件中他是这样声明的int printf(const char *format, ...)printf( )中分为两种参数,
2021-09-09 18:16:01
3666
原创 嵌入式Linux fstatfs/statfs文件系统信息查询函数
Englishgithub原始仓库https://github.com/jaredtao/TaoQuickgitee镜像仓库https://gitee.com/jaredtao/TaoQuick目录目录TaoQuick徽章预览项目编译发布仓库状态Issue其它状态部分Demo效果预览启动界面动态换皮肤百叶窗特效棋盘特效全部效果预览开发环境功能列表TaoQuick 安装和使用联系作者关注作者动态寻找同道中人赞助赞助列表TaoQuic
2021-07-09 15:31:17
988
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人