首页 > 解决方案 > C ++从同一个线程多次锁定互斥锁

问题描述

我有后台下载线程,如果下载完成,调用用户指定的回调。用户可以为不同的下载设置相同的回调。

在我的回调代码中,我有这个:

obj->lock();
obj->doSomething();
obj->unlock();

obj 是对 Object 的全局引用。

class Object {
    std::mutex lck;

    void lock() { lck.lock(); }

    void unlock() { lck.unlock(); }

    void doSomething() {}

}

如果从同一个线程调用,上面的代码是未定义的行为。我找到了 recursive_mutex,但我不确定它是否是正确的解决方案。

标签: multithreadingc++11

解决方案


推荐阅读