C++ atomic 用于指向用户定义对象的指针
C++ atomic for pointers to user defined objects
我可以将指向用户定义函数的指针作为原子变量的模板类型吗?像这样
class A
{
int d;
public:
void foo() { cout<<"Hellow wolrd!"; }
};
int main()
{
atomic<A*> ptrA;
//now how to call A::foo() from ptrA ?
}
您有两种调用方法的方法:
方法一:
(*ptrA).foo();
方法二
A* a = ptrA.load();
a->foo();
我对你的多线程场景一无所知,无法建议如何最好地避免任何陷阱,因为你没有提供太多信息,但第二种方式显然可以让你防范某些结果。另请注意,std::atomic
上的 load
方法可以接受许多不同的内存排序约束。
我可以将指向用户定义函数的指针作为原子变量的模板类型吗?像这样
class A
{
int d;
public:
void foo() { cout<<"Hellow wolrd!"; }
};
int main()
{
atomic<A*> ptrA;
//now how to call A::foo() from ptrA ?
}
您有两种调用方法的方法:
方法一:
(*ptrA).foo();
方法二
A* a = ptrA.load();
a->foo();
我对你的多线程场景一无所知,无法建议如何最好地避免任何陷阱,因为你没有提供太多信息,但第二种方式显然可以让你防范某些结果。另请注意,std::atomic
上的 load
方法可以接受许多不同的内存排序约束。