《Linux多線程服務端編程》讀書筆記——第一章_線程安全的對象生命期管理

要編寫線程安全的類,只需用同步原語保護內部狀態即可。


如果一個對象能被多個線程同時看到,,那麼對象的銷燬時機會變得模糊不清,可能出現競態條件(race condition):

  • 在即將析構函數一個對象時,從何而知此刻是否有別的線程正在執行該對象的成員函數?
  • 如何保證執行成員在函數期間,對象不會在另一個線程被析構?
  • 在調用某個對象的成員函數之前,如何得知這個對象還活着?它的析構函數會不會碰巧執行到一一半?

本文將試圖使用share_ptr解決這些問題。

線程安全的類應該滿足:
  • 多個線程同時訪問,表現出正確的行爲。
  • 無論操作系統如何調度這些函數,無論這些線程的執行順序如何交織。
  • 調用端代碼無需額外的同步或其它協調操作。
c++標準庫的大多數class都不是線程安全的。

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