自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 揭秘volatile:多线程编程的关键字玄机

​核心作用volatile的根本作用是防止编译器优化,确保每次访问变量都直接读写内存,从而保证数据的“可见性”。​不是线程同步的万能药​:这是最容易混淆的一点。volatile不提供原子性,也不提供内存排序保证​(即不阻止CPU或编译器对指令进行重排序)。​它不能替代互斥锁或原子变量来实现线程安全​。​性能考量​:由于阻止了相关优化,频繁访问volatile变量可能会影响性能。只在必要的场景下使用。​与const结合。

2025-11-01 11:36:47 1410

原创 inotify学习总结

inotify 是 Linux 内核提供的一种文件系统变化通知机制,用于实时监控文件或目录的事件(如创建、修改、删除等)。它通过内核与用户空间的交互,以异步事件驱动的方式工作,避免了轮询带来的性能开销,适用于需要实时响应的场景,如配置热重载、自动备份、文件同步等。

2025-10-26 13:03:34 757

原创 epoll学习总结

​​epoll 是 Linux 系统下一种高性能的 I/O 事件通知机制​​,它能让一个程序高效地同时监控成千上万个网络连接(或其他文件描述符),看看哪些已经准备好了进行读取或写入操作。​初始化与注册 (Setup)​​:应用程序首先调用创建一个 epoll 实例。内核会为其初始化上述的红黑树和就绪链表。对于每个需要监控的网络连接(fd),程序调用将其添加到红黑树中进行管理。在这个过程中,内核会为每个 fd 预先设置好一个回调函数​ (​等待事件 (Waiting)​​:应用程序调用epoll_wait。

2025-10-24 17:28:29 1131

原创 select, poll学习总结

这里先了解一个概念,什么是I/O多路复用?术语核心指代说明​多路​多个独立的 ​I/O 通道或数据流​最常见的就是多个 ​Socket 网络连接​(TCP/UDP)。广义上也包括其他文件描述符,如管道、终端设备等。​复用​​同一个线程或进程​一个服务单元(线程/进程)被多个 I/O 流共享,而非传统的一对一服务模型。​I/O 多路复用​一种机制​核心是委托内核作为“代理”,监视这些“多路”I/O 流。一旦有任何一路就绪(可读/可写),内核就通知应用程序,应用程序再对就绪的流进行操作。

2025-10-12 20:16:39 1277

原创 mmap学习总结

因此,即使您的程序还在运行,只要系统内存吃紧,内核就可能提前将你的修改写回硬盘。在上一篇文章(<零拷贝技术学习总结>)中,已经完整学习了零拷贝技术,知道了mmap也是零拷贝技术的一种实现,这里介绍下mmap的工作原理和使用方式。虽然内核有自动回写,但对于关键数据,依赖不可控的延迟写入是有风险的(如系统崩溃可能导致数据丢失)。:对映射区域的修改会写回文件,并且其他映射了同一文件的进程能看到更改。因此,即使在你的程序没有调用任何同步函数的情况下,也可能观察到数据被写入硬盘,这正是内核自动回写机制在起作用。

2025-10-11 21:45:23 1126

原创 零拷贝技术学习总结

零拷贝技术是一种高效的数据传输技术,它可以将数据从内核空间直接传输到应用程序的内存空间中。这里需要注意,也是让人容易误解的,零拷贝技术的“零”并非绝对意义上的零次拷贝,而是减少数据在用户态和内核态之间不必要的CPU拷贝次数。我们需要零拷贝,是因为传统的I/O方式在数据传输过程中产生了大量冗余操作,严重制约了现代数据密集型应用的性能。零拷贝技术通过“​​减少不必要的CPU拷贝​​”和“​​减少用户态与内核态的上下文切换​。

2025-10-11 20:09:41 806

原创 基础汇编知识总结一

本文介绍了ARM架构下的汇编语言基础知识,重点讲解了寄存器、常用指令和寻址模式。

2025-10-09 23:39:50 1029

原创 Linux崩溃问题定位办法总结二

嵌入式Linux项目中启用coredump功能可有效定位程序崩溃问题。

2025-10-08 22:47:11 1528

原创 Linux崩溃问题定位办法总结一

背景:在项目中,总会遇到一些应用层调用系统提供的函数后,发生一些偶发性的,并且难以定位的应用崩溃问题,因为最初都是偶发性和无规律性,所以对解决问题产生很大阻碍,好不容易复现一次问题,结果抓取的日志没有什么用处,后面查找了很多资料,找到了办法可以很好的解决这类问题,至少给自己处理一些其他类似问题带来了很好的思路,不像以前那样无力。第一种办法是利用maps文件和反汇编定位崩溃地址,比较复杂的,难以定位的崩溃问题可以用这个办法试下。利用文件和反汇编工具可以精确定位程序崩溃的地址。

2025-10-07 12:05:35 773

原创 Valgrind查找内存泄漏和句柄泄漏问题

Valgrind 是一款用于内存调试、内存泄漏检测及性能分析的工具集。其中memcheck是默认工具,用于检测内存泄漏和非法内存访问。

2025-10-06 13:57:05 695

原创 Perf抓取CPU热点函数

摘要:Perf是Linux内核提供的性能分析工具,主要用于定位CPU热点函数和优化性能。它支持采样、统计和追踪等多种模式,通过监控CPU性能计数器、跟踪内核/用户态事件来分析性能问题。

2025-10-06 10:11:59 1332

原创 soname踩坑

系统动态库缺失soname导致符号查找失败问题。

2025-10-05 18:27:48 1036

原创 pthread_cancel踩坑

【摘要】pthread_cancel存在资源泄漏、状态不一致等风险,应尽量避免使用。如需取消线程,应设置清理函数并使用延迟取消模式,关键操作前禁用取消。更安全的替代方案包括:1)使用标志位控制线程主动退出;2)通过pthread_kill发送信号触发线程安全退出。建议优先采用协作式终止机制,避免强制取消导致的不可控问题。文中通过代码示例对比展示了不安全取消与安全退出的实现差异,强调多线程程序设计应确保资源的正确释放和状态的完整性。

2025-10-05 17:37:25 515

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除