# 2024q1 Homework5 (assessment)
contributed by < `wu81177` >
:::spoiler
## 〈[因為自動飲料機而延畢的那一年](https://blog.opasschang.com/the-story-of-auto-beverage-machine-1/)〉閱讀心得
我觀察自己的個性,常常會在投入某項事物前過分的想像事情的困難程度,對自己的能力沒有信心,然後不敢去做,對於必須要做的事則是因此不斷的拖延,又或者是在投入一小段時間後達不到期望的進度而喪失動力,看到文章作者願意在不熟悉的領域中投入 14 個月的時間開發,甚至不惜延畢,這樣強大的行動力和毅力給了我很大震撼。
大學做專題時學長曾在解釋完複雜的架構後和我說「不要怕,你就先試試看,要先相信自己能夠做得到」,文章中老師也提到「你最大的問題在太害怕失敗了,既然都已經決定要延畢做飲料機了,那就要好好做,才不會辜負當初自己的期望。你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大。」
上述兩段話大致上可以對應到我的兩個問題,前者是投入前的恐懼,後者是投入後遭遇一點挫折就失去動力,像是在修這門課的時候,常常看到同學厲害的作業成果,認為自己肯定無法做這麼好而缺乏寫作業的動力,但其實我本來就不用做的這麼好,應該要專注在自身實力的進步,理性想想因為這樣妄自菲薄而駐足不前是很不值得的。
期許將來自己能夠勇敢的去試錯,與其花時間思考自己到底能不能辦得到不如把那些時間投入實作中,並且在過程中遇到問題時能夠穩住心態去解決而不是逃避。
:::
## 期末專題
---
7.0 => IEEE 754 (single precision)
LKMPG
tasklet vs. workqueue
**concurrent** singly-linked list
Implement add_tail and remove
```c
typedef struct __list {
int value;
struct __list *next;
} list_t;
void add_tail(list_t *old_tail, int v){
list_t *tail = malloc(sizeof(list_t));
old_tail->next = tail;
tail->value = v;
}
void remove(list_t *node, list_t *head){
list_t *curr = head;
if(node == head){
node -> next
}
while(curr->next != node){
curr = curr->next;
}
list_t *prev = curr;
prev->next = node->next;
}
```
> indirect pointer
> TODO: 撰寫程式附上測試,考慮並行
誠實面對自己
TODO: 研究並行的鏈結串列: https://hackmd.io/@sysprog/concurrency-lockfree 紀錄問題
TODO: 修改為符合 Linux 風格的 circular doubly-linked list + lock-free 附上測試和效能分析