C++ 创建原子函数

标签 c++ multithreading pointers mutex atomic

void foo ( Bar* bar , void(Bar::*qux)(void) )
{
    if ( bar )
    {
        bar->qux();
    }
}

问题是:

  1. bar 可以被另一个线程检查后删除。

  2. 我无法将互斥成员添加到 Bar 以锁定它。

因此我想知道,如果我可以告诉处理器以原子方式运行这个函数,我该怎么做呢?我在 Google 上花了很多时间,但没有找到可以理解的手册...

附言Debian、gcc、Boost NOT 允许,C++11 IS 允许。

最佳答案

您可能希望使用具有共享所有权语义的智能指针(例如 shared_ptrintrusive_ptr)来确保只要您引用该对象,该对象就会保持事件状态。

关于C++ 创建原子函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407984/

相关文章:

等参数的 C++ 函数特化

c++ - 如何在 C++ 中实现垃圾收集器

c++ - 如何将二维数组的所有元素初始化为特定值?

java - 如何在两个线程之间来回切换

C 结构体和指针

swift - 引用 AutoreleasingUnsafeMutablePointer

具有自定义类的 C++ 动态二维数组

c++ - std::holds_alternative 可变参数模板

multithreading - 如何访问当前从用户空间读取/写入的线程数?

java - 一次刷新多个 Realm 实例?