準(zhǔn)確的說(shuō)是除掉頭文件,測(cè)試代碼和非關(guān)鍵的純算法代碼(只有雙向環(huán)形鏈表的ADT),核心代碼只有130行左右,已經(jīng)是蠅量級(jí)的用戶態(tài)線程庫(kù)了。把這個(gè)庫(kù)取名為ezthread,意思是,這太easy了,人人都可以讀懂并且實(shí)現(xiàn)這個(gè)用戶態(tài)線程庫(kù)。我把該項(xiàng)目放在github上,歡迎來(lái)拍磚: https://github.com/Yuandong-Chen/Easiest-Thread。那么下面談?wù)勗趺磳?shí)現(xiàn)這個(gè)ezthread。

大家都會(huì)雙向環(huán)形鏈表(就是頭尾相連的雙向鏈表),我們構(gòu)造這個(gè)ADT結(jié)構(gòu):

首先是每個(gè)節(jié)點(diǎn):

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

1 typedef struct __pnode pNode;2 struct __pnode3 {4     pNode *next;5     pNode *prev;6     Thread_t *data;7 };

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

顯然,next指向下一個(gè)節(jié)點(diǎn),prev指向上一個(gè)節(jié)點(diǎn),data指向該節(jié)點(diǎn)數(shù)據(jù),那么這個(gè)Thread_t是什么類型的數(shù)據(jù)結(jié)構(gòu)呢?

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

typedef struct __ez_thread Thread_t;struct __ez_thread
{
    Regs regs;    int tid;
    unsigned int stacktop;
    unsigned int stacksize;    void *stack;    void *retval;
};

網(wǎng)友評(píng)論