系統程式設計師成長計畫005

2022-09-14 04:21:10 字數 481 閱讀 7343

1. 這個變成大寫的函式,就不需要用函式指標來給foreach做引數了。

因為他沒有什麼其他變種,不像print那樣,既要print int又要print str。

函式指標,或者說**函式,別瞎用!

2. 書裡的寫法

dlist_foreach(dlist, str_toupper, null);

看來還是堅持了**函式的上下文引數要保留,所以這裡只用了null。因為轉換成大寫,並沒有需要記錄保留的中間部分,一次即可完成。

3. 因為大小寫字母在不同語言中的定義是不一樣的,』a』是乙個字元常量,它的值在任何時候都 是 97,但在不同語言中,97 卻不一定代表』a』。

我們不能簡單的認為在 97(『a』)-122(『z』)之間的字元就是小寫字母,

而是應該呼叫標準 c 函 數 islower

來判斷,

同樣轉換為大寫應該呼叫 toupper

而不是減去乙個常量。

#

系統程式設計師成長計畫 併發 五

文章出處 作者 李先靜 無鎖 lock free 資料結構 多執行緒併發執行時,雖然有共享資料,如果所有執行緒只是讀取共享資料而不修改它,也是不用加鎖的,比如 段就是共享的 資料 每個執行緒都會讀取,但是不用加鎖。排除所有這些情況,多執行緒之間有共享資料,有的執行緒要修改這些共享資料,有的執行緒要讀...

系統程式設計師成長計畫 併發 五

無鎖 lock free 資料結構 多執行緒併發執行時,雖然有共享資料,如果所有執行緒只是讀取共享資料而不修改它,也是不用加鎖的,比如 段就是共享的 資料 每個執行緒都會讀取,但是不用加鎖。排除所有這些情況,多執行緒之間有共享資料,有的執行緒要修改這些共享資料,有的執行緒要讀取這些共享資料,這才是程...

系統程式設計師成長計畫 記憶體管理 三

作者 李先靜 記憶體管理器 在前面學習共享記憶體的時候,我們重新實現了迴圈佇列,兩個實現的不同之處只是在於記憶體分配和釋放上。對比一下 fifo ring create的實現 第一種實現用malloc分配記憶體。fiforing fifo ring create size t length retu...