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

标签 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 ?

}

最佳答案

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

方法一:

(*ptrA).foo();

方法二
A* a = ptrA.load();

a->foo();

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

关于c++11 - C++ atomic 用于指向用户定义对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37920070/

相关文章:

c++ - 如何进行 std::map 查找

c++ - 我们可以在实例化封闭类模板之后声明模板类成员的部分特化吗?

c++ - 我可以获得正式而非实际模板参数的字符串表示形式吗?

list - redis 以原子方式切换值

Java:线程间共享和调用变量

python - redis.pipeline() 的局限性

c++ - 单例、shared_ptr、原始指针或其他指针?

c++ - 模板代码中的统一初始化

java - volatile 为什么以及如何暗示原子读/写?

c++在线程之间共享状态的最佳方式