- 博客(19)
- 收藏
- 关注
原创 线程局部存储(TLS):原理、优缺点及使用示例
为了减少线程之间的竞争条件并提高程序的并发性能,线程局部存储(Thread Local Storage,TLS)提供了一种机制,允许每个线程拥有独立的变量副本。线程局部存储(TLS)是一种强大的机制,用于为每个线程提供独立的变量副本,从而避免线程之间的数据共享和竞争条件。• 由于每个线程都有独立的变量副本,访问和修改变量时不需要加锁,减少了线程同步的开销,从而提高了程序的性能。• 每个线程都有自己的变量副本,这可能会增加内存的使用量,尤其是当变量较大或线程数量较多时。线程局部存储(TLS)的原理。
2025-04-17 15:09:43
244
原创 当detach线程销毁失败时,coredump堆栈指向异常的深层解析
在多线程编程领域,线程资源回收始终是开发者需要谨慎处理的难题。当detach线程的销毁过程出现异常时,崩溃转储文件中的堆栈信息可能呈现出令人困惑的指向性。本文将深入剖析两种典型场景下的崩溃机理,揭示堆管理器在其中的关键作用。
2025-04-17 15:01:27
484
原创 IMU姿态解算算法对比:DCM、卡尔曼与扩展卡尔曼(C++实现)
C˙bn=Cbn⋅[ωibb×] \dot{C}_b^n = C_b^n \cdot [\omega_{ib}^b \times] C˙bn=Cbn⋅[ωibb×]{预测:x^k−=Fkx^k−1更新:Kk=Pk−HT(HPk−HT+R)−1 \begin{cases}预测:\hat{x}_k^- = F_k \hat{x}_{k-1} \\更新:K_k = P_k^- H^T (H P_k^- H^T + R)^{-1}\end{cases}{预测:x^k−=Fkx^k−1更新:Kk
2025-03-27 20:36:31
728
原创 C++ 内存对齐四大核心问题解析
SIMD寄存器(如SSE/AVX)要求连续内存块严格对齐,否则触发硬件异常。掌握这四大核心问题的应对策略,即可在性能优化与系统稳定性之间找到最佳平衡点。时,显式对齐具有正向收益。
2025-03-18 15:25:25
912
原创 字节对齐问题导致类构造函数崩溃的原理及解决方法
某些库(如 Eigen)要求特定数据类型必须分配在特定对齐的内存地址(如 16 字节对齐)。若未使用对齐内存分配接口(如。编译器为优化内存访问效率,会根据数据类型的大小和平台要求自动插入填充字节。类型通常需要 4 字节对齐,若其地址不是 4 的倍数,访问时可能触发硬件异常。),构造函数中动态创建对象时会导致未对齐访问。
2025-03-18 13:21:41
257
原创 机器人系统崩溃问题深度解析——单例陷阱与串口通信的致命交互
某机器人系统在启动时出现以下两类异常:场景一:场景二:通过日志分析和代码审查,最终定位到关键问题:排查步骤崩溃堆栈分析:条件对比测试:资源监控:致命组合:多线程同时调用构造函数依赖未完全初始化的串口资源2. 串口资源双重绑定资源冲突示意图:结果:未初始化的内存被访问(野指针)串口缓冲区被错误改写3. 看门狗机制的掩盖效应场景一特殊表现解析:关闭串口时,构造函数跳过串口初始化单例初始化时序冲突被规避看门狗重启后,单例已存在,直接复用解决方案
2025-03-09 17:17:05
916
原创 深入理解 termios 配置:禁用输入字符转换
在某些应用场景中,你可能需要精确控制输入数据的格式,不希望系统自动对输入字符进行转换。例如,在串口通信中,发送方和接收方可能需要严格按照特定的协议来交换数据,任何自动的字符转换都可能导致数据格式错误或丢失。在这个示例中,我们首先打开串口设备,然后配置串口属性,包括波特率、字符大小、停止位以及禁用输入字符转换。标志,你可以精确控制输入数据的格式,避免自动字符转换带来的问题。提供了丰富的选项来控制终端的各种行为,包括输入和输出的处理方式。结构中包含了多个字段,每个字段控制终端的不同方面。
2025-02-08 10:45:03
162
转载 SqlDataReader和SqlDataAdapter的区别
SqlDataReader 高效,功能弱,只读访问SqlDataAdapter 强大,要求资源也大一点SqlDataReader 只能在保持跟数据库连接的状态下才可以读取。。。SqlDataAdapter 大多情况下是一次性读取一个表,然后填充到DataSet中,然后就可以断开跟数据库的连接了。两者区别主要是 在线 和 离线 的区别。。。。。一:SqlDataReader rd;rd=cmd.ExecuteReader();比较高效,如果只是显示数据,当然要用这个二:SqlDataA
2021-04-09 10:03:29
626
转载 数学建模评价模型
数学建模评价模型#参考https://wenku.baidu.com/view/6391dd0116fc700abb68fcaa.html
2020-12-19 15:04:45
540
1
原创 深度搜索优先之回溯算法
深度搜索优先之回溯算法力扣第1415题题干:解题思路:1,套用DFS模板2,利用递归实现回溯3,先深度遍历,符合条件使n减1,递归调用helper函数,直至n为0,说明已遍历完第一个开心字符串,此时使k–4,当k为1时,res即为结果。...
2020-11-22 09:25:24
161
原创 关闭winform窗体后的ThreadAbortException中断异常
解决关闭winform窗体后的ThreadAbortException中断异常原因:在启动了多个线程,程序关闭时没有先关闭线程,而直接使用abort强制关闭线程的话,会出现中断异常。解决办法:一,事先关闭所有已知线程,此方法前提是开发者自己清楚开启了多少线程二,将主线程设置为后台线程,当主程序关闭时,主线程会随之关闭,此时正在执行的线程也会关闭。参考自https://blog.youkuaiyun.com/yizhu2000/article/details/2022264...
2020-11-17 21:41:26
464
原创 关于unity3D shader的UV理解
**关于unity shader的UV的理解**定义:摘自其他博主的定义:对于三维模型,有两个最重要的坐标系统,一是顶点的位置(X,Y,Z)坐标,另一个就是UV坐标。什么是UV?简单的说,就是贴图影射到模型表面的依据。 完整的说,其实应该是UVW(因为XYZ已经用过了,所以另选三个字母表示)。U和V分别是图片在显示器水平、垂直方向上的坐标,取值一般都是0~1,也 就是(水平方向的第U个像素/图片宽度,垂直方向的第V个像素/图片高度)。那W呢?贴图是二维的,何来三个坐标?嗯嗯,W的方向垂直于显示器表
2020-05-09 09:55:08
3398
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人