第十一章 讀書筆記

2022-09-13 04:45:11 字數 600 閱讀 4578

第十一章  linux驅動程式中的 併發控制

併發(concurrency)指的是多個執行單元同時、並行被執行。而併發的執行單元對共享資 源〈如硬體資摞、程式中的全域性變數、靜態變數等〉的訪問很容易導致競態條件( race conditions)。

自旋鎖並不關心鎖定的|臨界區究竟是怎樣的操作,不管是讀還是寫,都只允許同時只有乙個執 行單元可以極取自旋鎖, 即使有多個單元同時讀取臨界區資源也會被鎖住。實際上,對於併發訪問 共享資源時,多個執行單元同時讀取它是不會有任何問題的。為了解決這個問題,自旋鎖衍生出了讀寫自旋鎖。也就是將臨界區的讀、寫操作分開。如果開發人員認為臨界區的**只是讀取了共享資源,並未對共享資源做任何修改,那麼就可以使用讀自旋鎖,多個執行單元可以同時獲取乙個讀自旋鎖。

使用讀寫自旋鎖的方式和普通的自旋鎖類似,也需要通過定義讀寫自旋鎖變數,初始化讀寫自旋鎖變數飛獲取讀自旋鎖或寫自旋鎖、釋放讀自旋鎖或寫面旋鎖。

順序鎖與讀寫自旋鎖類似,只是為寫鎖賊予了更高的許可權。在讀寫自旋鎖中,讀鎖和寫鎖的優先順序是相同的。當讀鎖獲取讀自旋鎖時,寫鎖必須等待,直到臨界區的**執行完成,並釋放讀自旋鎖為止,反之亦然。 而順序鎖在獲取讀鎖的時候,仍然可以款取寫鎖,並繼續執行寫臨界區中的**。也就是說,寫鎖永遠不會被讀鎖阻塞。

第十一章讀書筆記

併發 concurrency 指的是多個執行單元同時 並行被執行。而併發的執行單元對共享資 源 如硬體資摞 程式中的全域性變數 靜態變數等 的訪問很容易導致競態條件 race conditions 例如,有乙個裝置檔案。程序 a 向該個裝置檔案寫入 1000 個 a飛而程序 b 向 裝置檔案寫入了 ...

讀書筆記 第十一章 C in depth

思考 11 2 from user in sampledata.allusers select user 轉譯 sampledata.allusers.select user user 範圍變數都可以是隱式型別。cast,oftype將飛型別化序列轉化為強型別。遇到不匹配型別,cast報錯,ofty...

APUE讀書筆記 第十一章 執行緒

新建立的執行緒可以訪問程序的位址空間,並且繼承呼叫執行緒的浮點環境和訊號遮蔽字,但是該執行緒的掛起訊號集會被清除 新執行緒時呼叫pthread self函式獲取自己的執行緒id,而不是從共享記憶體中讀出,或者從執行緒的啟動歷程中以引數的形式接收到的,因為新執行緒可能在主線程呼叫pthread cre...