我的应用程序有一个指向MyObject
个对象的指针数组:
MyObject **arr;
arr= new MyObject*[10];
应用程序有两个线程,这些线程将创建并删除new MyObject()
到数组arr
。因此arr[n]
会一直更改,但MyObject
本身不会更改。
我应该声明:
volatile MyObject **arr;
或者我应该选择:
MyObject ** volatile arr;
提前致谢
答案 0 :(得分:4)
我认为你需要MyObject * volatile * arr;
。
请注意,volatile是不原子变量或有效的同步方法。
编辑:这是:http://drdobbs.com/high-performance-computing/212701484
答案 1 :(得分:2)
我认为你在这里使用volatile
是错误的。来自Wikipedia,
在C中,因此在C ++中,volatile关键字旨在
我注意到这是标记的多线程。英特尔有一篇关于为什么volatile是mostly useless in multithreading的好文章。
最后,volatile MyObject **arr;
是正确的语法 - 如果这是你的最终意图。