tbb :: concurrent_unordered_map :: unsafe_erase是否会使任何现有的迭代器失效?

时间:2013-11-07 03:34:33

标签: c++ concurrency thread-safety hashmap tbb

我发现tbb::concurrent_unordered_map非常接近std::unordered_map,同时对并发性是安全的。我也知道unsafe_eraseinsert等并不是并发安全的。迭代器文档还声明任何现有的迭代器仍然对insertfind等有效。

问题是,确实unsafe_erase使其他任何迭代器失效而不是要求它擦除吗?

std::unordered_mapstd::map肯定有此行为,但未在concurrent_unordered_map文档中指定。

1 个答案:

答案 0 :(得分:4)

tbb :: unsafe_erase不会使其他迭代器失效。这是我们应该记录的属性。

它不会使其他迭代器失效的原因是底层实现是split-ordered list,而迭代器只是指向该列表。