27
A
回答
41
您可以用關鍵字mutable
標記數據成員,讓他們在不斷進行修改成員函數,例如:
struct foo
{
mutable mutex foo_mutex;
// ....
void bar() const
{
auto_locker lock(foo_mutex);
// ...
}
};
嘗試這樣做盡可能少的,因爲濫用mutable
是邪惡的。
11
對於概念上爲const
的方法,我通常可以使用mutable
鎖和緩存。
特別是在緩存性能計算結果的情況下。這是嚴格意義上的實現細節,不應該成爲調用者關心的問題,因此刪除const
指定將等於抽象中的小泄漏。
用鎖,我會問自己,如果鎖只是一個私人實現細節。如果鎖與其他對象共享,那麼它實際上是接口的一部分。
在某些平臺上,通過句柄訪問鎖,因此您可以在方法上使用const
而不用擔心mutable
。
相關問題
- 1. C - 互斥鎖屬性
- 2. 互斥鎖和鎖
- 3. 互斥鎖不能正常工作
- 4. 如何正確刪除互斥鎖?
- 5. 信號量和互斥鎖定概念
- 6. C# - 鎖定互斥鎖問題
- 7. C++中互斥鎖和臨界區之間的性能差異
- 8. c C中的互斥鎖替換
- 9. C++線程死鎖互斥鎖異常終止
- 10. 遞歸和非遞歸鎖(互斥鎖)
- 11. C++ - 初始化和互斥鎖和自旋鎖
- 12. 互斥鎖/解鎖命令
- 13. C++常量,正確性和const成員
- 14. 實現互斥鎖?
- 15. 確實需要使用互斥鎖嗎?
- 16. pthread_once_t變量是否需要互斥鎖?
- 17. 互斥鎖到只讀變量
- 18. 互斥鎖的順序
- 19. 南特的互斥鎖
- 20. 創建在C互斥鎖櫃類++
- 21. 顯示器VS互斥鎖在C#
- 22. C Pthreads互斥量值?
- 23. pthread互斥鎖在macOS上無法正常工作
- 24. 鎖定互斥鎖的分段錯誤
- 25. 成功的互斥鎖鎖定
- 26. 信號量/互斥量鎖定/解鎖頻率
- 27. 打印電弧和互斥鎖類型
- 28. 鎖定和同步使用互斥
- 29. 動態分配和銷燬互斥鎖?
- 30. 鎖,監視器,互斥
我認爲它取決於類的語義:在不同的情況下,不同的方法可能是有意義的。 – 2010-07-13 17:53:05
爲什麼你不想讓它成爲常量? – 2010-07-13 17:54:08
@Neil我有印象,應該避免mutable,但似乎互斥體是一個很好的候選人使用它,所以我想聽聽它是否好設計 – Anycorn 2010-07-13 17:57:15