1
、單執行緒記憶體池
記憶體池的基本思想是大塊向系統申請記憶體,內部切割為小塊,內部
cache
之後有選擇的分配,不夠的時候繼續向系統大塊申請記憶體,示例**如下:
struct tm_memblock
;class tm_pool
;void *tm_pool::newobj()
tm_bufunit *head = next;
next = head->next;
return (void *)head; }
void tm_pool::delobj(void *pbuf)
詳細實現建議看雲風的記憶體池,我也不過是學習了它的實現而已。
不要小看了單執行緒記憶體池,它是我們走向更複雜應用的基礎,它是我們後面提及的多執行緒記憶體池以及執行緒關聯記憶體池的基礎。
這種單執行緒的記憶體池分配釋放速度是很快的,比
dlmalloc
更快近1
倍,大約相當於
malloc/free
的50-100倍(
具體倍率視分配的大小而不同,分配小塊倍率小,分配大塊倍率大)。
有的朋友可能會考慮使用
std::list
之類的東西來構建記憶體池,我奉勸有這種想法的人打住,
std::list
是效率很低的,此外用乙個高層的東西構建底層模組,總體上屬於本末倒置。
簡單執行緒池類
簡單練習了一下 簡單實現了一下執行緒池類,增加對執行緒的理解和掌控。以後有時間再好好完善下,現在和大家分享下 include include include include include include include include include include include include...
簡單執行緒池實現
執行緒池可以處理多執行緒問題,只要將任務放到任務佇列中,執行緒池中的執行緒就會從佇列中取任務,以預設的優先順序開始執行,如果你的任務數大於正在工作的執行緒數,則執行緒池將會建立一根新的執行緒來輔助工作,但是永遠都不會超過執行緒池中線程的最大值。執行緒池的結構 pragma once include ...
簡單執行緒池實現
1.用於執行大量相對短暫的任務 2.當任務增加的時候能夠動態的增加執行緒池中線程的數量值到達乙個閾值 3.當任務執行完畢的時候,能夠動態的銷毀執行緒池中的執行緒 4.該執行緒池的實現本質上也是生產者與消費者模型的應用。生產者執行緒向任務佇列新增任務,一旦佇列有任務到來,如果有等待 執行緒就喚醒來執行...