資源簡介
使用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?< char*?end?=?cur?+?(newspan->_npage?< newspan->_list?=?cur;
newspan->_objsize?=?byte_size;
while?(cur?+?byte_size? {
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
- 上一篇:TCP消息轉發服務器
- 下一篇:C語言實現通訊錄
評論
共有 條評論