multithreading - 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,但我不确定它是否是正确的解决方案。
解决方案
推荐阅读
- docker - LCOW 已弃用 - Windows server 2019 现在应该使用 Docker Desktop 而不是 Docker Entreprise?
- c# - 如何使用本地构建的 nuget 包进行调试?
- android - 如何从内容uri android获取文件位置
- python - 带参数的装饰器的 MyPy 错误
- magento - Magento 2.2.11 - Paypal 错误我们无法下订单
- c# - 将多个“禁用单元格”行为添加到行为管理器
- python - 嘿伙计们,我目前正在使用烧瓶并遇到错误
- docker - 如何让第三方从我的私有存储库中提取 docker 映像?
- python - 用替换数据填充缺失的数据
- c# - 在等待时,当控制权交给调用者时,它是否处理 for 循环的下一次迭代(是否等待返回任务?)?