logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux 编程|条件变量与互斥锁:核心区别与正确搭配指南

互斥锁管 “资源安全”,条件变量管 “线程同步”,二者职责不同,缺一不可;条件变量不能单独使用,必须与互斥锁配合,否则会出现信号丢失、条件竞争等问题;避免用互斥锁 + 忙等代替条件变量,否则会浪费 CPU 资源,降低程序效率。其实条件变量和互斥锁的搭配,本质是 “分工合作”—— 互斥锁保证 “操作安全”,条件变量保证 “执行高效”,二者结合,才能写出既安全又高效的多线程代码。

#linux#c语言#mcu +1
Linux 无名管道 & 有名管道(FIFO)超详细讲解

管道是 Linux 最经典的进程间通信 IPC无名管道(匿名管道 pipe)有名管道(命名管道 FIFO)很多初学者分不清:什么时候用无名管道?什么时候用有名管道?区别在哪、怎么用、适用场景是什么?这篇一次性讲透,带原理 + 特点 + 代码实战。无名管道是Linux 内核开辟的一块内存缓冲区,没有实体文件、没有文件名,只存在于内存中。有名管道也叫FIFO,是存在于磁盘上的特殊文件,类型标识为p。有

#linux#c语言#数据结构 +2
一文分清:单片机硬件 Socket vs 网页 WebSocket(嵌入式 W5500 实战向)

单片机硬件 Socket:W5500 芯片内置 8 路独立硬件通信通道,底层 TCP/UDP 传输载体;网页 WebSocket:浏览器 JS 专用上层长连接协议,跑在 TCP 之上。二者层级、运行位置、使用场景完全不同,今天结合 BIT-MSE-8K-106Pro 工程实战讲清楚,看完再也不会搞混。单片机硬件 Socket 是网络的 “马路”,W550 硬件原生支持 TCP/UDP,是所有以太网

#linux#c语言#websocket
深入理解读写锁:为什么读操作也需要加锁?

读写锁是 “读多写少” 场景下的性能最优解,它通过 “读共享、写独占” 的机制,既保证了共享资源的安全性(避免脏读、数据混乱),又最大化了读操作的并发效率,解决了互斥锁串行读的性能瓶颈。而读锁的存在,不是多余的,而是为了协调读与写的关系 —— 它保护的不是读操作本身,而是读操作的正确性,避免读线程拿到写操作过程中的 “半成品” 数据,同时防止写操作被读操作打断。结合你之前的代码,我们可以做一个简单

#linux#c语言#stm32 +2
深入理解自旋锁:忙等背后的高效同步之道

自旋锁是 “短耗时临界区” 的最优解,它通过 “忙等” 的方式,避免了线程上下文切换的开销,在锁持有时间极短、多处理器系统的场景下,比互斥锁、读写锁更高效。它不是 “替代” 互斥锁、读写锁,而是 “补充”—— 不同的锁有不同的适用场景,没有最好的锁,只有最适合的锁。锁持有时间短,用自旋锁;锁持有时间长,用互斥锁;读多写少,用读写锁。

#linux#c语言#stm32 +3
Qt 三大窗口基类(QMainWindow、QWidget、QDialog)彻底搞懂

是主窗口专属,自带完整框架,适合完整应用QWidget是万能容器,灵活度最高,适合自定义 / 极简场景QDialog是弹窗专用,支持模态交互,适合临时交互界面。

#qt#c++#嵌入式实时数据库 +1
到底了