并发编程
文章平均质量分 92
并发编程
YouEmbedded
愿能与同路的你交流互鉴~
博客园 :https://www.cnblogs.com/YouEmbedded/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解码线程池
摘要: 线程池通过预先创建并复用线程,减少频繁创建/销毁的开销,提升并发效率。其核心机制包括:1)任务队列管理待执行任务(函数+参数);2)线程池结构体统一管理线程生命周期;3)同步机制(互斥锁+条件变量)保证线程安全;4)动态调整线程数量。关键实现要点:线程循环执行任务时需处理同步、虚假唤醒和资源释放问题。线程池将任务执行与线程管理分离,开发者只需关注任务逻辑,无需处理底层线程调度。原创 2025-11-20 18:39:03 · 1186 阅读 · 0 评论 -
解码线程调度与信号响应
本文介绍了Linux线程调度策略的核心概念与实现方法。主要内容包括:线程作为最小调度单位,采用抢占式调度机制,高优先级线程可抢占低优先级线程;优先级分为静态优先级(0-99,系统任务可抢占)和动态优先级(通过nice值调整);三种调度策略(SCHED_OTHER默认分时调度、SCHED_FIFO实时先到先服务、SCHED_RR实时轮询)的特性与使用场景;以及相关API函数的使用示例,如设置线程属性、调度策略和优先级等。文章通过代码演示了如何创建SCHED_FIFO策略的高优先级线程。原创 2025-11-19 21:26:23 · 922 阅读 · 0 评论 -
解码死锁的产生与解决
死锁是多线程编程中的常见问题,指多个线程因互相等待对方资源而陷入无限阻塞状态。其产生需同时满足四个必要条件:资源互斥、请求且保持、不可剥夺和循环等待。预防死锁的主要策略包括破坏这些条件,如一次性申请所有资源(破坏请求且保持)、资源抢占(破坏不可剥夺)和资源有序分配(破坏循环等待)。此外,还可通过运行时动态检测和事后处理解决死锁。实际编程中,统一加锁顺序是最常用的预防方法。代码示例展示了因加锁顺序不一致导致的死锁及其修正方案。原创 2025-11-18 18:20:51 · 1213 阅读 · 0 评论 -
解码线程同步与互斥
线程并发执行时会出现资源争抢问题,需通过同步和互斥机制解决。互斥锁是实现互斥的核心机制,包括初始化、上锁(阻塞/非阻塞/带超时)、解锁和销毁等操作。关键函数如pthread_mutex_init()、pthread_mutex_lock()和pthread_mutex_unlock(),使用时需注意:避免重复加锁造成死锁,确保释放已获取的锁,并通过临界区保护共享资源。示例展示了主线程和子线程如何通过互斥锁安全访问全局变量,以及带超时的锁获取方法,防止线程永久阻塞。原创 2025-11-17 17:44:08 · 1095 阅读 · 0 评论 -
解码线程编程
本文介绍了线程的基本概念及其在Linux系统中的创建方法。线程作为进程内执行单元,共享进程资源但拥有独立执行流。文章通过触摸屏坐标获取实例,演示了pthread_create()函数的使用:主线程打开设备文件,创建子线程持续读取触摸事件并转换坐标。关键点包括线程函数原型、参数传递注意事项、资源同步机制(全局变量)以及错误处理。代码展示了如何实现硬件坐标到屏幕坐标的转换,并强调线程安全性和边界检查的重要性。最后指出编译时需链接pthread库(-lpthread),为后续线程管理技术奠定基础。原创 2025-11-16 20:31:34 · 757 阅读 · 0 评论 -
解码IPC-消息队列、共享内存与信号量集
System-V IPC 是 Linux 进程间通信标准,含消息队列、共享内存、信号量集三类持久性资源,通过键值(key)标识,需手动创建 / 删除。共性:依赖 ftok () 生成唯一键值,可通过 ipcs/ipcmk/ipcrm 命令管理,资源常驻内存需手动清理。特性:消息队列按类型传数据,自带阻塞;共享内存效率最高,需信号量互斥;信号量集负责进程同步,靠 P/V 原子操作。适用场景:按类型传数据用消息队列,高效共享数据用共享内存 + 信号量,协调临界资源访问用信号量集。原创 2025-11-15 18:49:07 · 1056 阅读 · 0 评论 -
解码IPC-管道与信号
摘要: 进程间通信(IPC)是进程间数据交换的重要方式,本文重点解析管道和信号两种基础通信机制。管道分为匿名管道和命名管道:匿名管道通过pipe()创建,适用于亲缘进程通信,数据单向流动且读写端需明确分工;命名管道通过mkfifo()创建文件节点,支持无亲缘关系进程通过文件路径访问,具备多路写入能力。两者均遵循先进先出规则,但命名管道突破了亲缘限制,扩展了应用场景。文章通过代码示例演示了父子进程匿名管道通信及跨进程命名管道的实现方法,并分析了缓冲区大小测试等关键技术细节。原创 2025-11-14 20:17:12 · 998 阅读 · 0 评论 -
解码程序与进程
本文梳理了程序与进程的核心概念及编译执行过程。程序是静态指令集合,进程是其动态执行实例。程序需经过预处理、编译、汇编、链接四阶段生成ELF格式可执行文件。进程由PCB、代码段和数据段组成,具有五种基本状态并相互转换。Linux通过fork()创建进程,构建进程树结构,由systemd作为根进程管理所有进程。文中详细介绍了GCC编译流程、ELF文件结构、进程特征与状态转换等关键知识,并提供了相关工具命令和系统调用接口。原创 2025-11-13 19:32:21 · 905 阅读 · 0 评论
分享