C ++ atomic用于指向用户定义对象的指针

时间:2016-06-20 10:23:34

标签: c++11 atomic

我可以将指向用户定义函数的指针作为原子变量的模板类型吗?像这样的东西

class A
{
int d;
public:
 void foo() { cout<<"Hellow wolrd!"; }
};

int main()
{
atomic<A*> ptrA;
//now how to call A::foo() from ptrA ?

}

1 个答案:

答案 0 :(得分:1)

您有两种方法可以调用该方法:

方法1:

(*ptrA).foo();

方法2

A* a = ptrA.load();

a->foo();

我对您的多线程场景一无所知,建议如何最好地避免任何陷阱,因为您没有提供太多信息,但第二种方式显然可以防止某些结果。另请注意load上的std::atomic方法可以接受许多不同的内存排序约束。