当 2 个线程同时修改 class 对象的不同成员时,它是线程安全的吗?
Is it thread safe when 2 threads modifies different member of a class object concurrently?
如果线程 1 和线程 2 在没有锁的情况下并发执行,class A 将是线程安全的。
class A{
private:
Data data_;
next ptr_;
};
A a = new A();
thread1:
A obj1 = a;
obj1.data_ = 5;
thread2:
A obj2 = a;
obj2.ptr_ = another;
视情况而定。正如你所说,当对象是队列节点时,通过入队和出队,如果两个线程分别访问节点成员,则不会发生冲突。
如果线程 1 和线程 2 在没有锁的情况下并发执行,class A 将是线程安全的。
class A{
private:
Data data_;
next ptr_;
};
A a = new A();
thread1:
A obj1 = a;
obj1.data_ = 5;
thread2:
A obj2 = a;
obj2.ptr_ = another;
视情况而定。正如你所说,当对象是队列节点时,通过入队和出队,如果两个线程分别访问节点成员,则不会发生冲突。