
C+项目_高并发内存池
文章平均质量分 85
分享一些C++方向实战项目
X.Dragon
前PLA队员 在校大学生 C+方向,主修C+、Linux、计算机网络、网络编程、MySQL,分享学习记录,期待大家一起交流和学习...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++项目】高并发内存池项目第八讲 项目总结和面试问题分享
增加动态申请的效率减少陷入内核的次数减少系统内存碎片提升内存使用率尽量减少锁竞争应用于多核多线程场景。原创 2023-10-30 09:39:44 · 1326 阅读 · 0 评论 -
【C++项目】高并发内存池项目第七讲多线程并发执行情况下的性能分析以及复杂问题的调试技巧
条件断点是调试复杂应用程序时的强大工具,因为它们可以帮助 仅在特定情况下中断程序,而不是每次执行都中断。使用条件断点可以显著提高调试的效率,因为它允许 仅在特定条件下中断程序,而不是每次执行都中断。条件断点是一种在代码调试过程中使用的调试工具,它允许在满足特定条件时中断程序的执行,而不仅仅是在达到特定代码行时中断。忽略计数: 可以设置条件断点,使其在满足条件时连续中断多次,或者在满足条件后中断一次后自动忽略后续的满足条件。条件断点的位置:条件断点可以设置在代码的特定行或特定函数的入口处。原创 2023-10-30 09:12:29 · 255 阅读 · 0 评论 -
【C++项目】高并发内存池性能测试
这段代码是一个 C++ 程序,主要用于比较并评估使用不同内存分配和释放方式的性能。它包括了两个主要函数 BenchmarkConcurrentMalloc 和 BenchmarkMalloc 以及 main 函数来执行这些性能测试。BenchmarkConcurrentMalloc 函数这个函数用于执行并比较使用并发内存分配(ConcurrentAlloc 和 ConcurrentFree)的性能。它创建了一定数量的线程,每个线程会执行一定轮次的内存分配和释放操作。原创 2023-10-28 15:46:45 · 214 阅读 · 0 评论 -
【C++项目】高并发内存池第六讲 当申请内存大于256K时的处理
【代码】【C++项目】高并发内存池第六讲 当申请内存大于256K时的处理。原创 2023-10-28 11:41:14 · 177 阅读 · 0 评论 -
【C++项目】高并发内存池第五讲内存回收释放过程介绍
PageCache需要将一页一一页的小块内存何合并成一张大页的内存,来解决内存碎片问题,因为大的可以切成小的,而当申请的内存大于小块的内存碎片时,就会向堆中申请,造成内存浪费。CentralCache回收回来还需要做前后页的合并,合成一个大的内存块,然后继续交给PageCache处理。当闲置的内存超过一个批量单位大小的时候就开始回收,首先要计算出要回收到哪个桶的的内存,然后逐级往上回收。原创 2023-10-28 11:15:02 · 499 阅读 · 0 评论 -
【C++项目】高并发内存池第四讲 申请内存过程介绍流程介绍
一样的道理,仔细分析代码不难推断其逻辑,核心功能就是:当CentralCache向它申请内存时,它要是有空闲的内存就分配给CentralCache,要是没有,就想系统申请,然后会多申请一些,挂到相应的桶(挂桶规则之前介绍框架设计的时候介绍过)方便下一次分配。这里要计算对齐函数和相应的桶的下标,这个之前介绍ThreadCache的框架设计的时候有说明,这里不多赘述,计算完对齐数和桶下标之后,如果当前的桶下面有内存对象就直接返回给上级,如果没有,就去中中心调度器CentralCache中申请。原创 2023-10-26 11:00:48 · 504 阅读 · 0 评论 -
【C++项目】高并发内存池第三讲PageCache框架涉及+核心实现(上)
GetOneSpan//查看一下当前spanlists是否span未分配的while (it!else//先把centralCache的桶解掉 ,这样如果其他的线程释放对象回来,不会阻塞//走到这里说明没有空闲的span了,再往下找PageCache要//加锁 这是一个大锁//到这一步程序就已经申请到一个span了//对span进行切分 此过程不需要加锁 因为其他的线程访问不到这个span。原创 2023-10-23 15:47:56 · 558 阅读 · 0 评论 -
【C++项目】高并发内存池第二讲中心缓存CentralCache框架+核心实现
回顾一下ThreadCache的设计:如图所示,ThreadCache设计是一个哈希桶结构,每一个桶挂的是一块切分好的小块内存块,每个线程独享一个ThreadCache。CentralCache也是一个哈希桶结构,跟ThreadCache的结构类似,只不过ThreadCache挂的是切分好的小对象内存块,而CentralCache挂的是一个spanlist 是一个连续的大块内存链表,链接着很多个span(大块内存)原创 2023-10-23 10:58:56 · 1090 阅读 · 0 评论 -
【C++项目】高并发内存池第一讲(项目整体框架介绍、哈系统结构设计)
本项目参考了谷歌 tcmalloc 设计模式,设计实现了高并发的内存池。基于 win10 环境 VS2013,采用 C++进行编程,池化技术、多线程、TLS、单例模式、互斥锁、链表、哈希等数据结构。该项目利用了 thread cache、central、cache、page cache 三级缓存结构,基于多线程申请释放内存的场景,最大程度提高了效率,解决了绝大部分内存碎片问题。原创 2023-10-13 10:33:00 · 377 阅读 · 0 评论 -
【C++项目】手动实现一个定长内存池(了解内存分配机制、定长内存提高效率 附源码)
这是一个 C++ 中的对象池(Object Pool)的简单实现,用于更有效地管理对象的内存分配和回收。对象池是一种内存管理技术,旨在减少频繁分配和释放对象的开销,从而提高程序的性能。以下是该对象池的一些关键部分和功能:New() 函数:用于获取一个新的对象。它首先检查是否有已归还的内存块,如果有,则使用归还的内存,否则从内存池中分配一个新的对象。它使用 malloc 来分配内存,然后使用定位 new 来调用对象的构造函数,初始化对象。Delete() 函数:用于回收一个对象。原创 2023-10-11 16:23:21 · 516 阅读 · 0 评论