このクラスを考えてみましょう:
#include <vector>
class A {
private:
std::vector<int> m_vector;
public:
void insertElement(int i) {
m_vector.push_back(i);
}
const std::vector<int>& getVectorRef() const {
return m_vector;
}
};
メソッドはgetVectorRef
スレッドセーフですか?
getVectorRef
別のスレッドが戻ってきたときにinsertElement
、メンバ ベクトルが変更され、呼び出し元がgetVectorRef
間違った const 参照を取得するような呼び出しが行われる可能性はありますか?
2 つの const 修飾子 (1 つはベクトル用、もう 1 つはメソッド用) は、スレッド セーフのコンテキストでは意味がありませんか?