編碼學習筆記 執行緒

2021-10-01 06:14:22 字數 900 閱讀 9080

忙讓你擁有行走江湖的勇氣,美讓你覺得人間值得。
參考:《程式設計師的自我修養》
1. 什麼是執行緒

執行緒,是程式執行流的最小單元,有時又被稱為輕量級程序。

乙個標準的執行緒由執行緒id當前指令指標pc暫存器集合堆疊組成。

執行緒與程序的關係:

執行緒訪問許可權:

2. 執行緒安全

多執行緒程式處於乙個多變的環境,執行緒之間共享的資料隨時都可能被其它執行緒改變,因此多執行緒在併發時資料的一致性很重要。

為了避免多個執行緒同時讀寫同乙個資料而產生不可預料的後果,各個執行緒需對同乙個資料的訪問同步。

可重入函式,函式在重入之後不會發生任何不良後果。

編譯器過度優化可能導致執行緒不安全

雖然鎖在一定程度上可以保證執行緒安全,但是,編譯器過度優化,卻可能讓執行緒不再安全。經典的例子:

x = 0;

執行緒1 lock(); x++; unlock();

執行緒2 lock(); x++; unlock();

編譯器為了提高變數x的訪問速度,把x放到某個暫存器中。由於暫存器是執行緒私有的,但執行緒1訪問完x後,並非立刻將值寫入記憶體中,執行緒2開始執行,此時,執行緒2獲取的值為0,而非1,這與預期不符,執行緒不安全。

volatile關鍵字可阻止此型別的執行緒不安全。其功能:

barrier指令可以阻止cpu將該指令之前的執行交換到該指令之後執行。

編碼學習 筆記

編碼有ascii碼 沒有中文 只有英文 a 00000010 乙個位元組 8位 unicode a 00000000 00000001 00000010 00000100 4個位元組 32位 中 00000000 00000001 00000010 00000110 4個位元組 32位 utf 8 ...

字元編碼學習筆記

1.編碼方式 數字 代表什麼 顯示為什麼 編碼 ascii,gbk,unicode 字型檔案 編碼,點陣字型 所謂的編碼,是用預先規定的方法將文字 數字或其他物件程式設計數碼。ascii碼 用乙個位元組的低七位來表示英文本元 數字和其他一些符號。也就是 說我們看到的這些字元 數字在計算機中都有對應的...

prufer編碼學習筆記

對於乙個無根樹,他的 prufer 編碼是這樣確定的 那麼,通過給定的無根樹求 prufer 編碼就很簡單了 比如下面這個無根樹,它的 prufer 編碼就是 texttt 這個 prufer 編碼有一些很顯然的性質 首先長度肯定是 n 2 但每個元素可能相同,然後對於每個無根樹,它的 prufer...