小编Gre*_*ire的帖子

C++ stl unordered_map,线程安全,其中每个线程只访问它自己分配的密钥,并可以编辑该值

这是场景:

1)使用一个unordered_map<int, vector<MyClass*>*>让我们说我添加键1,2,... 8
2)所有键都在程序初始化时设置了向量,并且没有添加或删除
3)我有8个线程,其中thread1访问键[1] ,thread2访问键[2],... thread8访问键[8](即线程号只能访问该键号而不能访问其他键)

有时我会将值向量*重新分配给另一个堆分配的集合.(即thread1执行key[1] = new vector<MyClass*>)

我相信这将是线程安全的,我是否正确?如果没有,我想我会使用concurrent_unordered_map.

谢谢.

c++ unordered-map thread-safety c++11

9
推荐指数
1
解决办法
4150
查看次数

获取当前持有的 std::variant 类型 ID(如 boost::variant type())

我已经从 boost::variant 迁移到 std::variant,并遇到了障碍。

我在 boost 'type()' 中使用了一个很好的函数,它可以让你获得当前持有的 typeid。见https://www.boost.org/doc/libs/1_48_0/doc/html/boost/variant.html#id1752388-bb

如何使用 std::variant 实现这一点?

我在“type_index”上有一个无序映射键,它包含一些值“std::function”。我的变体,取决于类型,将决定我从地图中抓取什么函数来做一些操作。(我拥有的代码太大而无法发布)。

除了为特定 std::variant 编写特定访问者之外,还有其他实现想法吗?也许在 std::variant 上使用“index()”函数,然后索引到变体的类型列表中?有点像这样:如何从元组中获取第 N 个类型?

c++ boost typeid std-variant

4
推荐指数
1
解决办法
1825
查看次数

标签 统计

c++ ×2

boost ×1

c++11 ×1

std-variant ×1

thread-safety ×1

typeid ×1

unordered-map ×1