contribute by <petermouse
>
首先,先看Makefile以及make看看
-M
:顯示關聯的檔案
-MM
:-M
但忽略#include
內的關聯
-MMD
:-MM
但將結果寫入檔案(.d
)中
-MF [file]
:-M
-MM
但指定檔名位置
-rdynamic
:參考資料,我還是看不懂…待釐清
這裡定義了node_t的struct type
內含一個value以及表示下一個node的node_t指標
以及llist_t代表一個起始點的node指標與list大小
比較特別的是:
因為不同的系統會有不同的size大小 (參考C語言指標轉換為intptr_t型別)
所以將指標位置以intptr_t
儲存才比較有可攜性
還有定義一些關於linked list的操作函式。
這裡定義了task以及threadpool的type,還有相關的函式,跟第二週看到的mbrossard好像啊!不過跟實際還是有落差就是了。
在程式碼中task queue是用linked list做連結,push函式中可以看到新加入的task->next會link至head,在變成head,tail則是最早加入的node。
這樣跟我們對於queue的認知是相反的:head最先處理,tail最後,因此是名詞剛好相反,所以我把tqueue
相關函數的head
與tail
對調。
另外,我也把task_t中last
改成prev
,兩個都可以解釋成「上一個」,但prev
更清楚。
再來,在tqueue_pop
的函式中,是將head指向的task移除
可以發現
在vim中可以很簡單的辦到::1,$s/word/replace_word/g
可將所有word
取代成replace_word
1.$
:重頭至尾
g
:每一行每個符合的都處理
gcc 參數詳解
gcc preprocessor options
gcc link options
-rdynamic
C語言指標轉換為intptr_t型別
vim中的置換