C++併發編程實戰讀書筆記 (二)

精心組織代碼來保護共享數據

當其中一個成員函數返回的是保護數據的指針或引用時,會破壞對數據的保護。具有訪問能力的指針或引用可以訪問(並可能修改)
被保護的數據,而不會被互斥鎖限制。互斥量保護的數據需要對接口的設計相當謹慎,要確保互斥量能鎖住任何對保護數據的訪問,並且不留後門。

切勿將受保護數據的指針或引用傳遞到互斥鎖作用域之外,無論是函數返回值,還是存儲在外部可見內存,亦或是以參數的形式傳遞到用戶提供的函數中去。雖然這是在使用互斥量保護共享數據時常犯的錯誤,但絕不僅僅是一個潛在的陷阱而已。下一節中,你將會看到,即便是使用了互斥量對數據進行了保護,條件競爭依舊可能存在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章