基本上我正在为一堆对象维护一组状态:
#define SUBSCRIPTION_TYPE int
std::map< SUBSCRIPTION_TYPE , bool > is_object_valid;
而且我需要用它们各自的(而不是大锁)来保护每个元素。由于 的有效值是稀疏的(例如,从 0 到 10000000 的几十个值),因此 a 优先于、C 样式数组等。is_object_valid
mutex_t
SUBSCRIPTION_TYPE
std::map
std::vector
我正在尝试实现以下目标:
std::map< SUBSCRIPTION_TYPE , pthread_mutex_t > mutex_array;
但这似乎不起作用。(好吧,更新时可能会发生数据竞争std::map
)。
那么实现这一目标的最佳方法是什么?我必须编写一个映射到连续整数的线程安全订阅分配器,SUBSCRIPTION_TYPE
以便我可以将mutex_t
s 存储在数组中吗?