2012-01-27 4 views
2

私は3クラス、ClassOne,ClassTwo、およびClassThreeを持っています。 スレッドセーフなクラスとアクセッサ

ClassOne

ClassTwoはスレッド ThreadTwoに走っている、 Mainスレッドで実行され、そして ClassThreeThreadThreeに走っています。
ClassTwoおよび ClassThreeClassOneを呼び出し、その逆もあります。

ClassTwo::SomeMethod(){ 
    int l_SomeVar = m_ClassOnePointer->SomeAccessorMethod() // return m_SomeVariable 
    int l_SomeVar = m_ClassOnePointer->SomeConstAccessor() // SomeConstAccessor() const; 
    int l_SomeVar = m_ClassOnePointer->m_SomeVariable;  // Just a standard public int (not const, static, or volatile). 

    m_ClassOnePointer->m_SetSomeVariable(30); 
    m_ClassOnePointer->m_SomeVariable = 30; 

は現在、私はアクセサとconstのアクセサを使用していますが、スレッドのための安全な場合、それは私が安全にロックせずにこれをやって行くだろうかではない場合、私は、知りません。

答えて

0

いいえ、スレッドセーフではありません。ロックを持たない任意の型のgetterについては、私はnuthinを持っています。constは役に立ちません - getterがメンバ変数を変更しないと宣言しても、他のスレッドが変更できないというわけではありません。他のスレッドはセッターを呼び出すかもしれません。あるいは、ClassOneがそれらを変更している内部スレッドを持っているかもしれません。

+0

スレッディングの安全性のためにconstを使用しませんでしたが、これはアクセサの一部に必要でした。 –

+0

私は内部スレッドを作ることができません、私はわずか6スレッドの限界があります。 –

関連する問題