- 博客(10)
- 资源 (5)
- 收藏
- 关注
原创 ELF文件介绍
本文介绍了ELF(可执行与可链接格式)文件的结构及其在C++程序中的应用。ELF文件包含ELF头部、程序头表、节区和节区头表四个主要部分:头部标识文件类型和架构;程序头表指导操作系统加载程序;节区存储实际代码和数据;节区头表描述各节区信息。文章详细解析了各部分功能,并列举了常见节区(.text、.data、.bss等)的用途。ELF文件在编译链接、程序加载、动态链接和调试过程中发挥关键作用,理解其结构有助于深入掌握程序运行机制。
2025-08-14 23:42:39
669
原创 c++源文件到可执行程序的详细过程
C++编译过程详解 C++编译是一个将人类可读代码转换为机器可执行程序的完整流程,主要分为四个阶段: 预处理阶段:处理源代码中的宏、头文件包含和条件编译指令,生成纯C++代码文件(.i/.ii) 编译阶段:进行词法分析、语法分析、语义分析,生成中间代码并优化,最终输出汇编代码(.s) 汇编阶段:将汇编代码转换为机器指令,生成二进制目标文件(.o/.obj) 链接阶段:合并多个目标文件和库文件,解析符号引用,生成最终可执行程序 每个阶段都有特定的输入和输出,通过GCC等编译器工具链可以逐步观察这一转换过程。理
2025-08-14 23:39:35
2256
原创 读写锁以及其简易实现(Reader-Writer Lock)
读写锁:多读少写场景的高效同步原语 读写锁(Reader-Writer Lock)是一种优化多线程读写的同步机制,允许多线程并发读但独占写。C++17引入的std::shared_mutex通过共享锁(读)和排他锁(写)实现:读锁不互斥,写锁阻塞所有操作。其优势在于读多写少场景(如缓存、配置管理),但需注意写者饥饿(持续读阻塞写)和写竞争性能下降问题。解决方案包括写者优先策略或无锁结构。 实现原理:基于互斥锁和条件变量,核心状态包括读者数、写者活动标志和等待写者数。伪代码展示了通过条件变量协调读写线程的流程
2025-08-14 23:26:32
662
原创 浅谈一下多线程编程中的锁机制
锁机制是多线程编程中控制共享资源访问的核心工具。文章从物理锁的类比出发,阐述了编程锁的本质是排他性访问控制,并通过详细分类表对比了各类锁的特性。C++标准库提供了多种互斥锁(基础互斥、可重入锁、超时锁)、读写锁以及RAII管理工具,适用于不同并发场景。锁的选择需权衡互斥性、可重入性、公平性和性能开销等因素,以平衡数据安全性与程序效率。
2025-08-14 23:22:27
992
原创 使用epoll实现一个定时器
本文介绍了如何使用Linux的timerfd和epoll机制实现一个高性能定时器。主要内容包括:1) 定时器的基本功能需求分析;2) timerfd机制的优势及创建方法;3) 通过epoll监听定时器事件;4) 关键实现细节,包括定时器创建、事件处理循环和资源管理等。文中提供了完整的C++代码实现,重点解决了定时器回调与I/O事件统一处理的问题,并采用RAII模式确保资源安全释放。该方案适用于需要高精度定时且避免信号中断的应用程序场景。
2025-08-14 23:16:42
1100
原创 浅谈线程池技术并做一个简易实现
文章摘要: 线程池是一种优化多线程性能的机制,通过复用线程减少创建/销毁开销。核心组件包括线程集合、任务队列和管理器,Java/Python/C++等语言均提供内置实现。线程池避免了频繁线程操作导致的性能瓶颈和资源浪费,并能控制并发度。其工作流程包括任务提交、队列管理、动态扩展和空闲回收。合理配置线程池大小至关重要,需根据CPU核心数和任务类型调整。示例展示了C++简易线程池实现,包含任务类、线程管理及同步机制(互斥锁/条件变量),演示了初始化、任务提交和资源回收过程。线程池简化了多线程编程,提升了资源利用
2025-08-14 23:03:11
1065
原创 x86架构的Ubuntu上通过Docker运行ARM架构的系统
`x86`架构的`Ubuntu`上通过`Docker`运行`ARM`架构的系统
2023-05-21 01:37:15
2425
2
数据结构—最短路径搜索
2018-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅