【发布时间】:2011-07-20 20:54:41
【问题描述】:
当一个类的单个实例/对象在不同线程之间共享时,我想询问 C++ 中的线程安全(例如使用带有 C++ 包装器的 POSIX 线程)。例如,A 类的单个对象的成员方法将在不同的线程中调用。关于线程安全,我应该/可以做些什么?
class A {
private:
int n;
public:
void increment()
{
++n;
}
void decrement()
{
--n;
}
};
- 我应该在递增/递减方法中使用锁或其他东西来保护类成员 n 吗?静态(类变量)成员也需要锁吗?
- 如果成员是不可变的,我不必担心,对吧?
- 有什么我现在无法预见的吗?
除了多线程中的单个对象的场景,多线程的多个对象呢?每个线程拥有一个类的实例。除了静态(类变量)成员之外还有什么特别的吗?
这些都是我的想法,但我相信这是一个很大的话题,如果你有很好的资源并参考之前的讨论,我会很高兴。
问候
【问题讨论】:
标签: c++ multithreading thread-safety