摘要: 本文始发于公众号【高性能架构探索】,本公众号致力于分享干货、硬货以及工作上的bug分析。 原文链接如下: https://mp.weixin.qq.com/s/t5_Up2YZEZt1NLbvgYz9FQ 最近群里聊到了Memory Order相关知识,恰好自己对这块的理解是模糊的、无序的,所以借助 阅读全文
posted @ 2022-06-16 19:10 高性能架构探索 阅读(3067) 评论(8) 推荐(10) 编辑
摘要: 本文始发于公众号【高性能架构探索】,原文链接:深入理解移动语义 一直以来,C++中基于值语义的拷贝和赋值严重影响了程序性能。尤其是对于资源密集型对象,如果进行大量的拷贝,势必会对程序性能造成很大的影响。为了尽可能的减小因为对象拷贝对程序的影响,开发人员使出了万般招式:尽可能的使用指针、引用。而编译器 阅读全文
posted @ 2022-03-29 11:35 高性能架构探索 阅读(653) 评论(0) 推荐(2) 编辑
摘要: 本文原文:智能指针-使用、避坑和实现 在上篇文章(内存泄漏-原因、避免以及定位)中,我们提到了用智能指针来避免内存泄漏,今天借助本文,从实践、避坑和实现原理三个角度分析下C++中的智能指针。 本文主要内容如下图所示: 智能指针的由来 auto_ptr为什么被废弃 unique_ptr的使用、特点以及 阅读全文
posted @ 2022-02-08 09:43 高性能架构探索 阅读(1998) 评论(4) 推荐(5) 编辑
摘要: 在上篇文章中,我们分析了线上coredump产生的原因,其中用到了coredump分析工具gdb,这几天一直有读者在问,能不能写一篇关于gdb调试方面的文章,今天借助此文,分享一些工作中的调试经验,希望能够帮到大家。 写在前面 在我的工作经历中,前几年在Windows上进行开发,使用Visual S 阅读全文
posted @ 2022-01-19 05:18 高性能架构探索 阅读(1825) 评论(9) 推荐(7) 编辑
摘要: 借助本文,实现一种在“读多写一”场景下的无锁实现方式 在我们的工作中,多线程编程是一件太稀松平常的事。在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者缓存内容不符合预期,重则会产生异常,导致进程崩溃。为了解决这个问题,操作系统提供了锁、信号量以及条件变量等几种线程同步机 阅读全文
posted @ 2022-01-17 07:11 高性能架构探索 阅读(2100) 评论(13) 推荐(7) 编辑
摘要: 你好,我是雨乐! 作为C/C开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误(segment fault)或者内存泄漏(memory leak)。 今天,借助此 阅读全文
posted @ 2022-01-13 06:06 高性能架构探索 阅读(5510) 评论(16) 推荐(18) 编辑
摘要: 大家好,我是雨乐! 在我们的工作中,多线程编程是一件太稀松平常的事。在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者缓存内容不符合预期,重则会产生异常,导致进程崩溃。为了解决这个问题,操作系统提供了锁、信号量以及条件变量等几种线程同步机制供我们使用。如果每次操作都使用上 阅读全文
posted @ 2022-01-06 23:27 高性能架构探索 阅读(3109) 评论(4) 推荐(1) 编辑
摘要: 大家好,我是雨乐! 前段时间,某个同事找我倾诉,说是因为strict weak ordering导致程序coredump,给公司造成数百万损失,最终评级故障为P0级,年终奖都有点不保了,听完不禁一阵唏嘘。 在之前的文章中,我们分析了std::sort的源码实现_,在数据量大时候,采用快排,分段递归排 阅读全文
posted @ 2022-01-06 15:49 高性能架构探索 阅读(486) 评论(3) 推荐(3) 编辑
摘要: 你好,我是雨乐! 在上篇文章中,我们分析了线上coredump产生的原因,其中用到了coredump分析工具gdb,这几天一直有读者在问,能不能写一篇关于gdb调试方面的文章,今天借助此文,分享一些工作中的调试经验,希望能够帮到大家。 写在前面 在我的工作经历中,前几年在Windows上进行开发,使 阅读全文
posted @ 2022-01-05 19:04 高性能架构探索 阅读(1494) 评论(2) 推荐(4) 编辑
摘要: 大家好,我是雨乐! 在之前的文章中,我们分析了glibc内存管理相关的内容,里面的是不是逻辑复杂😁,毕竟咱们用几十行代码完成的功能,glibc要用上百乃至上千行代码来实现,毕竟它的受众太多了,需要考虑跨平台,各种边界条件等。 其实,glibc的内存分配库ptmalloc也可以看做是一个内存池,出于 阅读全文
posted @ 2021-12-02 16:57 高性能架构探索 阅读(2095) 评论(3) 推荐(2) 编辑