好的,我有三个课程,ClassOne
,ClassTwo
和ClassThree
。
ClassOne
在Main
主题中运行,ClassTwo
在主题ThreadTwo
中运行,ClassThree
在ThreadThree
中运行。<登记/>
在ClassTwo
和ClassThree
中,我拨打ClassOne
,反之亦然。
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;
目前我使用的是访问器和常量访问器,但我不知道它是否可以安全地进行线程化,如果不是没有锁定我将如何安全地执行此操作。
答案 0 :(得分:0)
不,它不是线程安全的。至于没有锁的任意类型的getter - 我有nuthin .. const没有帮助 - 只是因为getter声明它不会改变成员变量并不意味着其他一些线程不能改变它们。其他线程可能会调用setter,或者ClassOne有一个内部线程正在更改它们。