當一個類的單個實例/對象在不同線程之間共享時,我想問一下C++中的線程安全問題(使用帶有C++包裝的POSIX線程)。例如,類A的這個單個對象的成員方法將在不同的線程中被調用。我應該怎樣處理線程安全?多線程中的C++對象
class A {
private:
int n;
public:
void increment()
{
++n;
}
void decrement()
{
--n;
}
};
- 我應該保護類成員n上帶有一個鎖或其他什麼東西遞增/遞減法之內?靜態(類變量)成員是否需要鎖定?
- 如果一個成員是不可變的,我不必擔心,對吧?
- 任何我現在無法預見的東西?
除了多線程中的單個對象的情況,多線程的多個對象呢?每個線程都擁有一個類的實例。除了靜態(類變量)成員之外的任何特殊的東西?
這些是我腦海中的事情,但我認爲這是一個很大的話題,如果你有很好的資源並且參考以前的討論,我會很高興。
Regards