多线程可以在c ++中写入共享对象的不同变量吗

Hen*_*nry 0 c++ multithreading

所以这个共享对象是这样的(仅用于演示,而不是工作对象):

class Shared{
int var1;
int var2;

public:
    void setter1(int var){
        var1=var;
    }

    void setter2(int var){
        var2=var;
    }

}

Run Code Online (Sandbox Code Playgroud)

并能thread1做到shared->setter1(3)同时thread2shared->setter2(2)在同一时间,没有任何竞争条件或问题?

Ser*_*eyA 6

是的,您可以Shared在两个独立的线程中访问对象的各个子对象而无需同步,这不会成为竞争条件。外行的解释在cppreference上给出,这是部分引用:

始终允许不同的执行线程同时访问(读取和修改)不同的内存位置,而不会产生干扰,也无需同步。

但是,提防虚假共享!您的代码似乎易于使用。