• 大小: 7.12KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-01-29
  • 语言: C/C++
  • 标签: 内存池  c++  c  并发  

资源简介

使用C 语言,实现高并发内存池

资源截图

代码片段和文件信息

#include “CentralCache.h“
#include “PageCache.h“

CentralCache CentralCache::_inst;

Span* CentralCache::GetOneSpan(SpanList& spanlist size_t byte_size)
{
Span* span = spanlist.Begin();
while (span != spanlist.End())
{
if (span->_list != nullptr)
return span;
else
span = span->_next;
}

Span* newspan = PageCache::GetInstance()->NewSpan(SizeClass::NumMovePage(byte_size));
// 将span页切分成需要的对象并链接起来
char* cur = (char*)(newspan->_pageid << PAGE_SHIFT);
char* end = cur + (newspan->_npage << PAGE_SHIFT);
newspan->_list = cur;
newspan->_objsize = byte_size;

while (cur + byte_size < end)
{
char* next = cur + byte_size;
NEXT_OBJ(cur) = next;
cur = next;
}
NEXT_OBJ(cur) = nullptr;

spanlist.PushFront(newspan);
return newspan;
}


siz

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2098  2019-03-16 17:58  ConcurrentMemoryPool 2\CentralCache.cpp

     文件        611  2019-03-16 18:12  ConcurrentMemoryPool 2\CentralCache.h

     文件       4697  2019-03-16 18:17  ConcurrentMemoryPool 2\Common.h

     文件        541  2019-03-15 21:41  ConcurrentMemoryPool 2\ConcurrentAlloc.h

     文件       1982  2019-03-16 18:14  ConcurrentMemoryPool 2\PageCache.cpp

     文件        480  2019-03-16 17:55  ConcurrentMemoryPool 2\PageCache.h

     文件       1441  2019-03-16 18:12  ConcurrentMemoryPool 2\ThreadCache.cpp

     文件        472  2019-03-16 18:12  ConcurrentMemoryPool 2\ThreadCache.h

     文件       5419  2019-03-26 20:39  ConcurrentMemoryPool 2\UnitTest.cpp

     目录          0  2019-04-14 18:39  ConcurrentMemoryPool 2

----------- ---------  ---------- -----  ----

                17741                    10


评论

共有 条评论