讓我們用C考慮這樣一個類++:C++的set/get方法同步
class CuteClass
{
public:
int getFancyInt() const;
float getNiceFloat() const;
string getPerfectString() const;
void setIntSomething(int something);
void setInternalState(State newState);
};
這個類的實例可以同時從幾個不同的線程訪問。然後:
所有getMethods(getFancyInt,getNiceFloat,getPerfectString)不應該彼此阻塞。它們不會更改對象的內部狀態。
所有使用setMethod(setIntSomething,setInternalState)應:
- 塊彼此 - 避免對象的不一致的狀態,
- 塊中的所有的getMethods - 以避免返回部分改變的數據,
- 由被阻塞所有getMethods - 避免返回部分更改的數據。
帶互斥鎖的簡單lock_guard將滿足除一個之外的所有要求 - getMethod將阻止其他getMethods。
在這種情況下,哪種解決方案容易且乾淨?
可能重複/ Writer Locks in C++](http://stackoverflow.com/questions/244316/reader-writer-locks-in-c) – Amit