我有后台下载线程,如果下载完成,则调用用户指定的回调。用户可以为不同的下载设置相同的回调。
在我的回调代码中,我有这个:
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,但我不确定它是否是正确的解决方案。