類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...