我正在尝试创建一个线程安全的哈希映射。我为哈希图中的每个存储桶都有一个互斥量向量,以支持哈希图中每个条目的读写器锁。
但是,当我想重新哈希哈希图时,我想锁定整个图,以便在重新哈希期间不会发生读/写。
我认为我需要一个额外的互斥体,但是我的Gets / Puts方法是否也需要获取此互斥体?我该如何仅在进行重新哈希处理时阻止其他线程进行读/写操作,而仅在进行写和读取操作时才相互阻止呢?
这是我当前的哈希表类的外观:
vpcmpeqb k0, zmm0, [rsp]
答案 0 :(得分:1)
这太过思索了。保护整个容器的单个互斥锁就足够了。但是,如果您坚持要实施这种复杂的设计:
std::shared_mutex
。