个人-问题总结
文章平均质量分 75
en.en..
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么 mmap 性能优异,仍需封装专用函数实现图片解析与屏幕显示?
在嵌入式 Linux(RK3568 等平台)显示开发中,mmap 是最优的高性能 IO 方案。依托零拷贝特性,它彻底规避了传统 read/write 的缓冲区拷贝损耗,大幅提升显存刷新、大图加载效率,是嵌入式 UI 开发的主流选择。很多开发者都会产生共性疑问:mmap 可以直接将显存、图片文件映射为用户态指针,读写高效、使用便捷。为何工程开发中,依然需要单独封装大量 LCD 管理、图片解析、画面渲染函数?核心结论:mmap 只是底层数据通道,仅负责高效传输数据。原创 2026-09-08 08:49:24 · 87 阅读 · 0 评论 -
Linux 孤儿进程与僵尸进程
孤儿进程:父死子活,被 init 进程托管,自动回收资源,属于系统正常机制,无害。僵尸进程:子死父不回收,PCB 残留占用 PID 资源,大量堆积会导致系统无法创建新进程,有害且无法暴力杀死。僵尸进程处理方式:主动 wait 回收、忽略 SIGCHLD、信号异步回收、杀死父进程交由系统清理。原创 2026-09-08 08:46:40 · 108 阅读 · 0 评论 -
C语言核心解析:#define与typedef本质区别
define 是预处理工具,胜在灵活通用,牺牲了类型安全;typedef 是类型工具,胜在安全规范,专一性强。二者并非替代关系,各司其职。开发中只需坚守“类型别名用typedef,预处理操作用define”的核心原则,即可彻底规避绝大多数语法陷阱,写出规范高效的C语言代码。原创 2026-09-07 08:48:52 · 398 阅读 · 0 评论 -
竖线 |:管道、按位或、掩码组合
在 Linux 学习过程中,绝大多数人都会被同一个符号搞混淆:命令行里它是管道、代码里它是位运算、系统函数参数里它是标志叠加。明明都是竖线,为什么功能完全不同?标准答案:符号本身没有任何意义,解析环境决定意义。Shell 解释器、C语言编译器、Linux 内核,三套完全不同的解析规则,互不干涉。终端里的是管道,负责命令数据流接力;代码里的是按位或,负责二进制运算;open/socket 参数里的是掩码叠加,用来组合多个系统功能;永远不要用代替组合系统标志;符号不决定功能,环境决定一切。原创 2026-09-06 12:34:04 · 412 阅读 · 0 评论 -
pipe 函数定义为什么不符合标准?
数组传参变指针,形参数组也是指针,两边类型统一,所以 pipe 传参完全合法。原创 2026-09-06 12:33:43 · 191 阅读 · 0 评论 -
pthread_mutex_timedlock 超时 互斥锁原理与时序详解
Linux 常规互斥锁在锁被占用时会永久阻塞线程,极易引发死锁、程序卡死。为解决该问题,POSIX 提供了pthread_mutex_timedlock 超时锁,支持限时等待资源,超时自动退出阻塞,大幅提升多线程程序稳定性。1.可有效避免线程永久阻塞,提升并发程序健壮性;2. 超时时间为绝对时间,是该接口最大踩坑点;3. 必须区分「主线程前置休眠时间」与「超时等待时间」,防止时序理解错误;4. 工程开发需主动销毁锁、优化时钟源、分级处理错误,避免资源泄露与逻辑异常。原创 2026-09-06 12:32:41 · 319 阅读 · 0 评论 -
System V 与 POSIX 名称由来
字母 V 为罗马数字 5,全称 System Five,是 AT&T 贝尔实验室发布的第五代商用 Unix。早期 Unix 仅用于实验室内部,1983 年 AT&T 推出商用版本 System V,前缀 “System” 代表完整商用操作系统套件。消息队列、共享内存、信号量这套进程间通信接口诞生于此系列,得名 System V IPC,相关接口至今被 Linux 兼容保留。原创 2026-09-06 12:31:34 · 234 阅读 · 0 评论 -
信号量:互斥、同步、死锁(伪代码解释说明)
多个线程互相持有对方需要的独占资源,相互等待、无线程释放资源,导致所有线程永久阻塞、无法推进。互斥:初值1,同线程P/V,解决资源争抢同步:初值0/N,跨线程P/V,解决执行乱序死锁:多线程循环持有资源、相互等待,全员阻塞。原创 2026-09-06 12:29:55 · 311 阅读 · 0 评论 -
共享内存 多进程并发竞争:非原子操作引发数据丢失
1. 普通全局变量受 COW 机制隔离,多进程共享数据只能使用共享内存;2.++是非原子操作,读改写拆分是并发数据丢失的根本原因;3. 多进程并发写共享资源,必须加同步机制(互斥锁/信号量)保护临界区;4. 程序结束需调用,主动释放共享内存资源。原创 2026-09-06 12:28:17 · 301 阅读 · 0 评论 -
LVGL 普通函数指针与结构体函数指针原理
在 LVGL 事件开发中,开发者经常使用绑定回调函数。多数初学者无法理解:回调函数如何被控件保存、事件参数从何而来、两种函数指针的区别是什么。本文从零、零基础、标准化讲解整套原理。不依赖任何结构体、独立存在的函数指针,称为普通函数指针。该类型仅规定函数格式,不属于任何结构体,属于标准普通函数指针类型。将函数指针作为结构体成员进行保存,该指针称为结构体函数指针。普通函数指针是“裸函数地址”,结构体函数指针是“被结构体收纳保存的函数地址”。1. 普通函数指针:用户编写的回调函数,独立存在,无归属。原创 2026-09-05 09:04:12 · 208 阅读 · 0 评论
分享