物件大小固定的單執行緒記憶體池設計

2021-07-14 09:24:55 字數 1066 閱讀 8118

類rational通過過載new和delete以實現高效的記憶體分配,提高程式效能。

具體設計方案如下:

class rational

void* operator

new(size_t size)

void

operator

delete(void* doomed, size_t size)

private:

int n;

int d;

static memorypool* mempool;

};/*

以下為記憶體分配與**類## 標題 ##的實現

*/template

class memorypool

; //新增空閒元素至空閒列表

void expandthefreelist(inthowmany = expansion_size);

};template

memorypool::memorypool(size_t size)

//析構函式 遍歷空間列表,並刪除所有元素

template

memorypool::~memorypool()

}//分配記憶體

template

inline

void* memorypool::alloc(size_t)

memorypool* head = next;

next = head->next;

return head;

}//將記憶體**到空閒列表

template

inline

void memorypool::free(void* doomed)

//expandthefreelist向堆中分配新元素,然後將它們連線到空閒列表中

//當空閒列表被用盡時呼叫

template

void memorypool::expandthefreelist(int howmany)

runner->next = 0;

}

讀書筆記:《提高c++效能的程式設計技術》

單執行緒記憶體池

1 單執行緒記憶體池 記憶體池的基本思想是大塊向系統申請記憶體,內部切割為小塊,內部 cache 之後有選擇的分配,不夠的時候繼續向系統大塊申請記憶體,示例 如下 struct tm memblock class tm pool void tm pool newobj tm bufunit head...

LINUX下的簡單執行緒池

前言 任何一種設計方式的引入都會帶來額外的開支,是否使用,取決於能帶來多大的好處和能帶來多大的壞處,好處與壞處包括程式的效能 的可讀性 的可維護性 程式的開發效率等。執行緒池適用場合 任務比較多,需要拉起大量執行緒來處理 任務的處理時間相對比較短,按照執行緒的週期t1 建立階段 t2 執行階段 t3...

基於pthread實現的簡單執行緒池模型

基於pthread實現的簡單執行緒池模型,可實現執行緒池的建立 執行 終止 釋放等操作。其主要api如下 建立執行緒池 int qtpthreadpoolcreate struct qtpthreadpool pool,int threadcnt 執行緒池銷毀操作 int qtpthreadpool...