多线程内存池

news/2024/7/20 15:02:28 标签: c++, 内存管理

1.实现多线程创建和delete内存池
2.加速存取速度
3.创建速度和系统new,delete开辟内存趋近一致。
4.防止内存碎片
5.内存池池直接添加即可。

一.main

/*
* Setup the memory pool
*/
#include"Alloctor.h"
#include<iostream>
#include<thread>
#include<mutex>
#include"CELLTimestamp.hpp"


http://www.niftyadmin.cn/n/1531647.html

相关文章

C++ : 引发了异常: 写入访问权限冲突。 this 是 nullptr

1.一般是初始化了参数&#xff0c;却没有给参数空间&#xff0c; 查找问题&#xff0c;看构造里是否初始化&#xff0c;初始化的时候是否给了空间。 特别是单例模式中&#xff0c;初始化一定要给空间。

内存池申请内存和释放内存

//申请内存void *allocMem(size_t size){//当内存池中可放下if (size<=MAX_MEMORY_SIZE){//szAlloc 是这个数据的大小,allocMemory是去分配这个数据return _szAlloc[size]->allocMemory

服务器收发分离

发送cell基类 #ifndef _CELL_TASK_H_ #include<thread> #include<mutex> #include<list>//快速增加删除任务 #include<functional> #include<iostream>//任务类型-基类

如何增加服务端的处理效率

1.业务分离。发送和接收不能放在一个线程中&#xff0c;因为发送比接收的效率慢 2.分离数据&#xff0c;就涉及共享数据&#xff0c;就需要消费者和生产者

将数据包一次发送一个字节或者一次发送一个包

1.一次发送一个包 int SendData(DataHeader* header,int nLen){int ret SOCKET_ERROR;//isRun is bool && header 是不是为空if (isRun() && header){ //int _stdcall send() _stdcall意思为从右往左压入栈&#xff08;0-》header->dataLength->header…

内存池链表逻辑

1.上一个链表节点的next指向下一个节点&#xff0c; 当前的链表节点的next必须为空 MemoryBlock* _pTempbefore _pHeader; for (size_t i 1; i < _nBlockSize; i){//第二块开始后开始储存数据MemoryBlock* pTemp (MemoryBlock*)(_pBuf (i * (_nSize sizeof(MemoryBloc…

多线程并发select网络V2.0

一.新增项目: 1.增加了自定义服务端继承。 2.计数器封装在服务端三大项中 二。服务端 server。cpp #include"EasyTcpServer.hpp" #include<thread>bool g_bRun = true; void cmdThread() {while (true