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

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

首先是每個節(jié)點:

平面設計培訓,網(wǎng)頁設計培訓,美工培訓,游戲開發(fā),動畫培訓

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

平面設計培訓,網(wǎng)頁設計培訓,美工培訓,游戲開發(fā),動畫培訓

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

平面設計培訓,網(wǎng)頁設計培訓,美工培訓,游戲開發(fā),動畫培訓

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

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式