Multithreading 使用类和访问器的线程安全性

Multithreading 使用类和访问器的线程安全性,multithreading,winapi,thread-safety,Multithreading,Winapi,Thread Safety,好的,我有三个班,一班,二班,三班 类1在主线程中运行,类2在线程ThreadTwo中运行,类3在线程ThreadTwo中运行。 在二班和三班,我给一班打电话,反之亦然 ClassTwo::SomeMethod(){ int l_SomeVar = m_ClassOnePointer->SomeAccessorMethod() // return m_SomeVariable int l_SomeVar = m_ClassOnePointer->SomeCon

好的,我有三个班,一班,二班,三班

类1在主线程中运行,类2在线程ThreadTwo中运行,类3在线程ThreadTwo中运行。 在二班和三班,我给一班打电话,反之亦然

    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;

目前我使用访问器和常量访问器,但我不知道线程是否安全,如果不安全,我如何在没有锁的情况下安全地执行此操作。

不,它不是线程安全的。至于没有锁的任意类型的getter,我有nuthin。。常量没有帮助——仅仅因为getter声明它不会更改成员变量并不意味着其他线程不能更改它们。其他线程可能会调用setter,或者ClassOne有一个内部线程正在更改它们。

不,它不是线程安全的。至于没有锁的任意类型的getter,我有nuthin。。常量没有帮助——仅仅因为getter声明它不会更改成员变量并不意味着其他线程不能更改它们。其他线程可能会调用setter,或者ClassOne有一个内部线程正在更改它们。

我没有使用const来确保线程安全,它只是一些访问器需要。我不能创建内部线程,我只有6个线程。我没有使用const来确保线程安全,它只是一些访问器需要的。我不能创建一个内部线程,我只有6个线程的限制。