精心組織代碼來保護共享數據
當其中一個成員函數返回的是保護數據的指針或引用時,會破壞對數據的保護。具有訪問能力的指針或引用可以訪問(並可能修改)
被保護的數據,而不會被互斥鎖限制。互斥量保護的數據需要對接口的設計相當謹慎,要確保互斥量能鎖住任何對保護數據的訪問,並且不留後門。
切勿將受保護數據的指針或引用傳遞到互斥鎖作用域之外,無論是函數返回值,還是存儲在外部可見內存,亦或是以參數的形式傳遞到用戶提供的函數中去。雖然這是在使用互斥量保護共享數據時常犯的錯誤,但絕不僅僅是一個潛在的陷阱而已。下一節中,你將會看到,即便是使用了互斥量對數據進行了保護,條件競爭依舊可能存在。