【发布时间】:2019-04-04 10:35:32
【问题描述】:
我正在尝试将几个互斥体(指针)存储到一个集合中。
std::set<std::mutex*> mutex_set;
addLock(const std::mutex* lock)
{
mutex_set.insert(lock)
}
由于这不起作用,我尝试了锁守卫和唯一指针,但没有任何成功。将互斥体存储到集合中的最佳方法是什么?
【问题讨论】:
-
请详细说明它是如何“不工作”的。这可能与
lock的类型为const std::mutex*而集合存储std::mutex*有关吗? -
我仍然在尝试理解 const mutex 指针的无用之处。
-
可能是指向非 const 互斥体的 const 指针。
-
不可能有
std::set<std::mutex>吗?什么不工作? -
为什么要将它们存储在
set中?为了避免在容器中有两次相同的互斥锁?套装有什么用?除了锁定集合中的所有互斥体(否则你怎么知道要锁定哪个?)之外,我几乎无法想象一个用例,这相当于只有一个互斥体。
标签: c++ multithreading c++11 pointers mutex