APUE讀書筆記-第十一章-線程

  1. 新創建的線程可以訪問進程的地址空間,並且繼承調用線程的浮點環境和信號屏蔽字,但是該線程的掛起信號集會被清除
  2. 新線程時調用pthread_self函數獲取自己的線程ID,而不是從共享內存中讀出,或者從線程的啓動歷程中以參數的形式接收到的,因爲新線程可能在主線程調用pthread_create返回之前就運行了,那麼新線程看到的是未初始化的ntid的內容
  3. 單個線程可以通過3種方式退出
    • 簡單地從啓動例程中返回,返回值是線程的退出碼
    • 線程可以被同一進程中的其他線程取消
    • 調用pthread_exit
  4. pthread_exit函數的無類型指針參數所指向的結構所使用的內存在調用者完成調用以後必須是有效的(爲了解決這個問題,可以使用全局結構或者用malloc函數分配結構)
  5. 當線程執行以下動作時,清理函數rtn是由pthread_cleanup_push函數調用的
    • 調用pthred_exit時
    • 響應取消請求時
    • 用非零execute參數調用pthread_cleanup_pop時
進程原語 線程原語 描述
fork pthread_create 創建新的控制流
exit pthread_exit 從現有的控制流中退出
waitpid pthread_join 從控制流中得到退出狀態
atexit pthread_cancel_push 註冊在退出控制流時調用的函數
getpid pthread_self 獲取控制流的ID
abort pthread_cancel 請求控制流的非正常退出

7. 可移植的程序並不能對使用何種處理器體系結構做出任何假設
8. 互斥機制要正常工作必須要求所有線程都設計成遵守相同數據訪問規則
9. 讀寫鎖(讀共享寫互斥)允許更高的並行性,當讀寫鎖處於讀模式鎖住的狀態,而這時有一個線程試圖以寫模式獲取鎖時,讀寫鎖通常會阻塞隨後的讀模式鎖請求,這樣可以避免讀模式鎖長期佔用,而等待的寫模式鎖請求一個得不到滿足

發佈了48 篇原創文章 · 獲贊 17 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章