void foo ( Bar* bar , void(Bar::*qux)(void) )
{
if ( bar )
{
bar->qux();
}
}
问题是:
bar
可以被另一个线程检查后删除。我无法将互斥成员添加到
Bar
以锁定它。
因此我想知道,如果我可以告诉处理器以原子方式运行这个函数,我该怎么做呢?我在 Google 上花了很多时间,但没有找到可以理解的手册...
附言Debian、gcc、Boost NOT 允许,C++11 IS 允许。
最佳答案
您可能希望使用具有共享所有权语义的智能指针(例如 shared_ptr
、intrusive_ptr
)来确保只要您引用该对象,该对象就会保持事件状态。
关于C++ 创建原子函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407984/