亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: duanjigang
打印 上一主題 下一主題

發(fā)個簡單(易用)的內(nèi)存池 [復制鏈接]

論壇徽章:
0
21 [報告]
發(fā)表于 2010-01-12 16:30 |只看該作者

回復 #1 duanjigang 的帖子

在init_mem_list函數(shù)里的第一次分配的話 ,是不是應該要添加一行代碼:
  if(!plist->list)
        {
            plist->list = p;
            plist->list->next = p;//添加代碼。否則在第二次循環(huán)時候的p->next指針為空,與第一次分配的不能形成鏈表
            plist->ptr = p;
            continue;
        }

論壇徽章:
0
22 [報告]
發(fā)表于 2010-01-12 18:00 |只看該作者
原帖由 libra811 于 2010-1-12 16:30 發(fā)表
在init_mem_list函數(shù)里的第一次分配的話 ,是不是應該要添加一行代碼:
  if(!plist->list)
        {
            plist->list = p;
            plist->list->next = p;//添加代碼。否則在第二次循環(huán)時候 ...

p是循環(huán)中的一個臨時變量,這個分配的原則是如果鏈表頭空,就把當前新節(jié)點給鏈表頭。
如果不空,就把新節(jié)點加入到鏈表頭和后續(xù)節(jié)點之間。
您這句似乎沒有必要,呵呵,也看不懂這樣寫的意圖:wink:

論壇徽章:
0
23 [報告]
發(fā)表于 2010-01-12 22:25 |只看該作者
說是“簡單”,但還是不大明白……

論壇徽章:
0
24 [報告]
發(fā)表于 2010-01-13 10:30 |只看該作者
原帖由 flydream81 于 2010-1-12 22:25 發(fā)表
說是“簡單”,但還是不大明白……

呵呵,是目的不明白還是實現(xiàn)不明白?

目的是:
初始化時申請足夠用的內(nèi)存,然后運行時根據(jù)用戶需求,調(diào)用申請接口時,就分配一個該類型的節(jié)點,也就是一個該類型的變量。
用戶釋放時,就把該節(jié)點放入內(nèi)存池。為了省去頻繁的malloc和free操作,提高內(nèi)存分配和回收的效率。
實現(xiàn)方法:
首先從一個類型說起,一個類型的類存儲就是一個雙向鏈表,這個鏈表構(gòu)成了一個棧,初始化時,初始化N個該類型的節(jié)點,掛在該鏈表下。鏈表每個節(jié)點下面掛一個節(jié)點,鏈表頭在棧尾部,鏈表尾在棧頂部。
       每次申請節(jié)點時,把鏈表尾的節(jié)點摘下來返回給用戶,然后彈棧,也就是鏈表尾指針往前移動一個位置。
如果尾巴和頭相等,則說明節(jié)點分配完了。
        每次回收節(jié)點時,先把鏈表尾往移動一個位置,然后把回收的節(jié)點掛在鏈表尾上。

對于多個不同的類型,我們用了一個棧列表,或者說數(shù)組,數(shù)組每個元素就是一個類型的鏈表或者棧。

類型我們定義為0到255,用一個u_int8_t的變量標識。
進行申請時,根據(jù)類型值直接哈希到數(shù)組的對應鏈表上。
回收時,先根據(jù)節(jié)點地址,計算它的類型值,然后再哈;厝。---因為我們在分配內(nèi)存時,刻意為每個節(jié)點多申請了一個字節(jié),用這個字節(jié)存儲類型值,這樣回收就快了

不知道說清楚沒有,呵呵
對了,我放上了圖,應該比較清晰了

[ 本帖最后由 duanjigang 于 2010-1-13 10:55 編輯 ]

論壇徽章:
0
25 [報告]
發(fā)表于 2010-01-13 13:07 |只看該作者
使用 spin_lock和spin_lock_bh的區(qū)別可以參考albcamus發(fā)表的精華文章
http://linux.chinaunix.net/bbs/viewthread.php?tid=656347&extra=page%3D3%26amp%3Bfilter%3Ddigest

我記得最后有個表的,很有用,可惜現(xiàn)在下不了附件,可以去網(wǎng)上搜搜

[ 本帖最后由 thomas_ar 于 2010-1-13 13:09 編輯 ]

論壇徽章:
0
26 [報告]
發(fā)表于 2010-01-13 16:33 |只看該作者
難道最近所有的附件都看不到?這是怎么一回事  ???

論壇徽章:
0
27 [報告]
發(fā)表于 2010-01-14 21:32 |只看該作者
附件統(tǒng)統(tǒng)看不到:em11: :em11: :em11:

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
28 [報告]
發(fā)表于 2010-01-15 12:07 |只看該作者
最近這個附件審核好嚴格!

論壇徽章:
36
IT運維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
29 [報告]
發(fā)表于 2010-01-15 13:05 |只看該作者
好像是論壇在調(diào)整,估計還沒有結(jié)束

論壇徽章:
0
30 [報告]
發(fā)表于 2010-01-16 10:24 |只看該作者
原帖由 ubuntuer 于 2010-1-11 23:33 發(fā)表
我看到的附件都是審核中  謝謝分享
不過我記得好像sourceforge有個不錯的內(nèi)存池的^_^

http://sourceforge.net/projects/mempool/

這個是在應用層實現(xiàn)的,貌似是國內(nèi)的同志寫的.

[ 本帖最后由 osmanthusgfy 于 2010-1-16 10:28 編輯 ]
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP